为了账号安全,请及时绑定邮箱和手机立即绑定

c++中关于IO的问题,如下:

c++中关于IO的问题,如下:

C++
料青山看我应如是 2018-11-12 13:13:01
#include <iostream>std::istream& get(std::istream& in) {   int ival;  while(in>> ival,!in.eof()){       if(in.bad()) throw   std::runtime_error( "IO   stream   corrupted ");       if(in.fail()){       std::cerr <<   "bad   data,try   again ";       in.clear();       continue;       }      std::cout << ival << "(loop)";   }   in.clear();  return   in;}using   namespace   std; int   main() {double   dval;get(cin); //cin >> dval; //cout << dval << "(outloop)" <<endl;                 return   0; }问题:我输入int型的数是正常的,我输入非法的数后,它会一直循环bad   data,try   again只能按ctrl+c结束。为什么会循环呢,不是只打印一次错误信息,然后continue就接着输下一吗?还有最后两句就是加了//的那两句,好像没什么用?(网上下的例子)
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

缓冲区的内容还在,加个in.sync():

in.clear();

in.sync();


查看完整回答
反对 回复 2018-11-15
?
米脂

TA贡献1836条经验 获得超3个赞

得重新刷新缓冲区,清除缓冲区内容,同楼上


查看完整回答
反对 回复 2018-11-15
  • 2 回答
  • 0 关注
  • 784 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信