【发布时间】:2011-07-14 08:49:51
【问题描述】:
输出是:
123 123456我需要:
123 456如何重置 ostringstream 以获得所需的输出?
【问题讨论】:
输出是:
123 123456我需要:
123 456如何重置 ostringstream 以获得所需的输出?
【问题讨论】:
s.str("");
s.clear();
需要第一行将字符串重置为空;第二行需要清除可能设置的任何错误标志。如果你知道没有设置错误标志或者你不关心重置它们,那么你不需要调用clear()。
通常使用新的std::ostringstream 对象而不是重用现有对象更容易、更简洁、更直接(直截了当?),除非代码用于已知的性能热点。
【讨论】:
for (int i=0; i<100; ++i) { std::ostringstream foo; foo << "bar"; std::cout << foo.str() << " ";}。是否会打印:bar bar bar [...] 或 bar barbar barbarbar [...]?
#define sstr(x) (oss.str(""),oss.clear(),oss << x, oss.str()) 允许使用简洁的代码(用于测试用例等):name=sstr("pow" << i << ":" << j);