如何正确使用ostringstream在C ++?(How do I use the ostring

2019-07-31 08:06发布

我试图返回时,我的toString()方法被调用的一些信息,其中包括一个整数和一些浮动。 我了解ostringstream伟大工程,但是当包含此方法被调用一遍又一遍,信息被堆叠在我以前输出的类别。 这里是我的代码

    ostringstream int_buffer, float_buffer, float_buffer2;

介绍我的类的开头,然后

    string toString()
    {

        int_buffer << on_hand;
        float_buffer << price;
        float_buffer2 << generated_revenue;

        string stron_hand = int_buffer.str();
        string strprice = float_buffer.str();
        string strrev = float_buffer2.str();

        string output = "Product name: " + description + " Units left: " + stron_hand + " Price: " + strprice + " Revenue: $" + strrev;
        return output;
    }

我知道我的编码是可怕的,我还是相当新的这一点,但我的输出的一个例子是,

“产品名称:电影票单位左:4926价格:9.999.99收入:$ 9.99239.76”

其中第二个应显示

我知道这只是更新的问题,但是这就是我迷路了。

Answer 1:

声明int_bufferfloat_bufferfloat_buffer2toString()函数。 因为你是在类的声明,这些对象保持周围,所以每次通话时间toString()函数你是串联到int_bufferfloat_bufferfloat_buffer2一遍又一遍。 如果你声明的方法里面,而他们只会存在toString有效。 无论如何,你在做什么你正在尝试做太多的代码。 你可以简单地做:

std::string toString()
{
    std::ostringstream buffer; 
    buffer << "Product name: "<< description << " Units left: " << on_hand << " Price: "<< price << " Revenue: $" << generated_revenue;
    return buffer.str();
}


文章来源: How do I use the ostringstream properly in c++?