求助:一个简单而又费解的C++ IO 问题
最近在看C++ Primer,其中有如下的代码,如果输入非整数,比如任意一个字母,程序就会陷入无限循环,不停地打印"Invalid data! Please retry!"
#include <iostream>
using namespace std;
int main()
{
int a(0);
cout<<"Input an integer number:"<<flush;
while(cin>>a, !cin.eof())
{
if(cin.bad())
throw runtime_error("IO stream corrupted!");
if(cin.fail())
{
cerr<<"Invalid data! Please retry!"<<endl;
cin.clear(istream::failbit);
continue;
}
break;
}
cout<<"a="<<a<<endl;
return EXIT_SUCCESS;
}
if(cin.fail())
{
cerr<<"Invalid data! Please retry!"<<endl;
cin.clear();//修复流
cin.ignore();//忽略原流中字符
continue;
}