我知道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
),它会尝试从头开始覆盖它。我的代码出了什么问题?
答案 0 :(得分:6)
您需要将std::ios_base::app
添加到openmode
。它确保stringstream
对象在每次写入之前寻找流的末尾。试试这个:
stringstream ss(std::ios_base::app|std::ios_base::in|std::ios_base::out);