如何清除ostringstream

Ale*_*x F 92 c++ stream

    ostringstream s;

    s << "123";
    cout << s.str().c_str() << endl;

    // how to clear ostringstream here?
    s << "456";
    cout << s.str().c_str() << endl;

输出是:

123
123456

我需要:

123
456

如何重置ostringstream以获得所需的输出?

Jam*_*lis 193

s.str("");
s.clear();
Run Code Online (Sandbox Code Playgroud)

第一行需要将字符串重置为空; 需要第二行来清除可能设置的任何错误标志.如果您知道没有设置错误标志或者您不关心重置它们,那么您不需要打电话clear().

std::ostringstream除非代码用于已知的性能热点,否则通常使用新对象而不是重用现有对象更容易,更清晰,更直接(直接?).

  • 每次创建新流时+1.流可以有很多内部状态.重置所有这些至少需要与流构造函数一样多的代码. (3认同)
  • 这个答案也值得一看:http://stackoverflow.com/a/624291/142239 (2认同)
  • `#define sstr(x) (oss.str(""),oss.clear(),oss &lt;&lt; x, oss.str())` 允许简洁的代码(用于测试用例等):`name= sstr("pow" &lt;&lt; i &lt;&lt; ":" &lt;&lt; j);` (2认同)