#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 回答
- 0 关注
- 803 浏览
添加回答
举报
0/150
提交
取消