string str = "0.000 0.005 0.001";
istringstream s(str);
string sub;
while (s)
{
s >> sub;
cout << sub << endl;
}
这是我的代码,我只想输出str
中的每个数字,但我得到最后一个数字两次。我知道有很多更好的方法可以实现它,但我想知道这段代码有什么问题。我在operator>>
上出错了吗?
答案 0 :(得分:2)
使用
while (s >> sub)
{
cout << sub << endl;
}
代替。在你的代码中,你最终会吃掉#34;流的结尾,s >> sub
失败,sub
保持不变,最后一次好读(即最后一个数字),因此最终显示两次。
相关:Why is iostream::eof inside a loop condition considered wrong?