快速示例(玩代码):
int main()
{
std::stringstream sstr;
sstr << "hello\n";
sstr << "world\n";
std::stringstream sstr2;
// sstr2 << "test\n";
if (sstr2.rdbuf()->in_avail() != 0)
{
sstr << sstr2.rdbuf();
}
print_me(sstr);
return 0;
}
我有一个流SSTR
。 该流保存数据。 我还希望它保存存储在SSTR2
中的所有其他数据。 为此,我使用sstr<<; sstr2.rdbuf();
。 如果我在SSTR2
为空时执行该行,那么SSTR
也将为空。 这是为什么?
注:我知道可以使用if(sstr2.rdbuf()->in_avail()!=0)
来保护自己不受这种情况的影响。
如果要保留旧值,则应使用如下代码:
sstr << sstr.rdbuf() << sstr2.rdbuf();