如何在c ++中正确使用ostringstream?

Arm*_*ium 15 c++ string ostringstream sstream

当我调用toString()方法时,我试图返回一些信息,包括一个整数和一些浮点数.我了解到ostringstream工作得很好,但是当一遍又一遍地调用包含这个方法的类时,信息会堆叠到我之前的输出上.这是我的代码

    ostringstream int_buffer, float_buffer, float_buffer2;
Run Code Online (Sandbox Code Playgroud)

那是在我班上开始介绍的

    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;
    }
Run Code Online (Sandbox Code Playgroud)

我知道我的编码很糟糕,我还是比较新的,但我输出的一个例子是,

"产品名称:电影票单位:49价格:9.99收入:9.99美元"

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

第二个应该显示的位置

"产品名称:电影票单位:26价格:9.99收入:$ 239.76"

我知道这只是一个更新的问题,但那就是我迷失的地方.

And*_*ani 34

声明int_buffer,float_bufferfloat_buffer2里面toString().因为你是在类的声明,这些对象保持周围,所以每次打电话时toString()你要串联int_buffer,float_buffer以及float_buffer2一遍又一遍.如果在方法内部声明它们将仅在toString活动时存在.无论如何,你正在为你想做的事做太多代码.你可以这样做:

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