用stringstream更新后C ++ stringstream无法正常工作:str()

时间:2015-02-10 23:16:54

标签: c++ string stringstream

我知道stringstream可以使用stringstream::str()进行更新,但如果我之后在stringstream中输入其他内容,则无法按预期工作。以下片段演示了这种现象:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;
int main()
{
    stringstream ss; //ostringstream gives the same output
    ss << "Original string ";
    ss.str("Updated string ");
    ss << "sth else";
    cout << ss.str() << endl;
}

我希望得到输出

Updated string sth else

但实际上是输出

sth elsestring

似乎将新输入的字符串附加到当前字符串的末尾(在我的情况下为Updated string),它会尝试从头开始覆盖它。我的代码出了什么问题?

Here's a live demo

1 个答案:

答案 0 :(得分:6)

您需要将std::ios_base::app添加到openmode。它确保stringstream对象在每次写入之前寻找流的末尾。试试这个:

stringstream ss(std::ios_base::app|std::ios_base::in|std::ios_base::out);