【发布时间】:2015-02-10 23:16:54
【问题描述】:
我知道stringstream 可以用stringstream::str() 更新,但如果我在此之后在stringstream 中输入其他内容,它就无法按预期工作。下面的 sn -p 演示了这个现象:
#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),而是尝试从头开始覆盖它。我的代码有什么问题?
【问题讨论】:
-
使用 stringstream 时,您必须处理输入/输出位置和状态 - 避免它并使用 istingstream 或 ostingstream。
-
@DieterLücking 感谢您的建议。我尝试使用 ostringstream,它给出了相同的输出。
-
另外,不要重复使用它 - 使用新实例,而不是使用 str(....) 操作缓冲区
标签: c++ string stringstream