如题,本人按如下方式实现程序:
#include<iostream>
#include<stdexcept>
using namespace std;
istream& inoperate(istream& in)
{
int ival;
while(in>>ival, !in.eof())
{
if(in.bad())
{
throw runtime_error("IO stream corrupted.");//抛出运行时错误:系统故障
}
if(in.fail())
{
//cout << in.failbit <<endl;
cerr <<"bad data,try again."; //出现可恢复错误
in.clear(); //恢复流
//cout << in.failbit <<endl;
in.ignore(200); //跳过类型非法输入项
continue;
}
cout << ival<< " "; //读入正常,将结果输出
}
cout <<endl;
in.clear();
return in; //返回
}
int main(int argc,char **argv)
{
double dval;
inoperate(cin);
cin >> dval;
cout << dval << endl;
system("pause");
return 0;
}
遇到的问题是:如果输如不是int型数据,比如输入“1 2 3 4 a 12 34”或者“1 2 3 4 12.5 8 10”,输出结果为“1 2 3 4 bad data,try again.” 当继续输入数据,如22 11 34 56,没反应,按上面的说明,in.clear()不是恢复流么,为什么不能继续输入呢,而且main()中的cout没有执行啊。求高手指导!先谢了。