istringstream 的状态判断问题

xiongjiqw 2010-04-09 01:09:39
int main()
{
string str = "A B C D E F";
istringstream ss(str);
string tmpstr;
while ( ss )
{
ss >> tmpstr;
cout << tmpstr << endl;
}
}
这段代码输出的是

A
B
C
D
E
F
F

即重复了输出最后一个,但是改为 while ( !ss.eof() ) 就正常了,这是为什么呢?
...全文
337 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
linuxqqdaoapple 2010-04-09
  • 打赏
  • 举报
回复
while ( ss )
{
ss >> tmpstr;
cout << tmpstr << endl;
}

当流读取了最后一个字串F 时候,流得状态还是 ok的.当下一次读取的时候,读取失败,但tmpstr的内容还是会输出出来.所以最后的字串会输出两次.一般的写法如楼上.先读在判断流状态.

ss>>tmpstr 返回的是ss.
taodm 2010-04-09
  • 打赏
  • 举报
回复
while (ss >> tmpstr )
{

33,318

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧