当我的 toString() 方法被调用时,我试图返回一些信息,其中包括一个整数和一些 float 。我了解到 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 美元”
我知道这只是更新的问题,但这就是我迷失的地方。
最佳答案
在 toString()
函数中声明 int_buffer
、float_buffer
和 float_buffer2
。因为您在类中声明,所以这些对象被保留,所以每次调用 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();
}
关于c++ - 如何在 C++ 中正确使用 ostringstream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12233710/