关于istringstream和>>运算符

时间:2015-11-25 05:41:05

标签: c++ istringstream

string str = "0.000 0.005 0.001";
istringstream s(str);
string sub;
while (s)
{
    s >> sub;
    cout << sub << endl;
}

这是我的代码,我只想输出str中的每个数字,但我得到最后一个数字两次。我知道有很多更好的方法可以实现它,但我想知道这段代码有什么问题。我在operator>>上出错了吗?

1 个答案:

答案 0 :(得分:2)

使用

while (s >> sub)
{
    cout << sub << endl;
}

代替。在你的代码中,你最终会吃掉#34;流的结尾,s >> sub失败,sub保持不变,最后一次好读(即最后一个数字),因此最终显示两次。

相关:Why is iostream::eof inside a loop condition considered wrong?