当我调用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;
}
我知道我的编码很糟糕,我对此仍然相当新,但我输出的一个例子是,
“产品名称:电影票单位:49价格:9.99收入:9.99美元”
“产品名称:电影票单位:4926价格:9.999.99收入:$ 9.99239.76”
第二个应该显示
“产品名称:电影票单位:26价格:9.99收入:$ 239.76”
我知道这只是一个更新的问题,但那就是我迷失的地方。
答案 0 :(得分:30)
在int_buffer
内声明float_buffer
,float_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()
}