死循环!

qsq_007 2012-01-13 04:38:27
int ival;
// 读取cin,但是只测试EOF
while (cin >> ival , !cin.eof()){
if (cin.bad())
throw runtime_error("IO stream corrupted");
if (cin.fail()){
cerr << "bad data, try again";
cin.clear(istream::failbit);
continue;
}
// ok to process ival
}
这是C++primer里的一段代码,我调试了一下,进入死循环,请问各位大虾是什么原因!
...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cbzjzsb123 2012-01-14
  • 打赏
  • 举报
回复
Qyee16 2012-01-14
  • 打赏
  • 举报
回复
qsq_007 2012-01-14
  • 打赏
  • 举报
回复
不好意思大家!我看的是2006版的C++primer,新版已经改过来了,continue前面加:
cin.ignore(numeric_limits<std::streamsize>::max(),’\n’);//跳过类型非法的输入项
lee_鹿游原 2012-01-13
  • 打赏
  • 举报
回复
while(!cin.eof()) //直至按ctrl+z键退出!
平凡的思想者 2012-01-13
  • 打赏
  • 举报
回复
输入ctrl+d结束输入,等于输入了EOF,跳出死循环。
opponent2012 2012-01-13
  • 打赏
  • 举报
回复
这个程序应该只是一部份。有个throw。如果用try作用这段,再用catch,应该就可以跳出了吧?

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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