多次提取和插入时出现奇怪的字符串流行为。

时间:2015-09-06 11:17:00

标签: c++ stringstream

有人可以帮助我理解这种串流行为吗?

stringstream temp;
temp << "342 1 ";
int a;
while (temp >> a) {
    cout << a << endl;
}
temp << "56" << " ";
temp >> a;
cout << a << endl;

哪个输出:

342
1
1

我希望它能输出

342
1
56

这是在2015年的视觉工作室中编制的。

1 个答案:

答案 0 :(得分:5)

读取值1后,下一个while将到达文件结尾并将流置于错误状态。然后,任何进一步的读取都将失败,并保持a不变。

您可以通过调用temp.clear()清除错误状态。