关于cin.clear()
这是书上的代码:
int i;
while(cin>>i,!cin.eof())
{
if(cin.bad()){throw runtime_error("bad error!");}
if(cin.fail())
{
cerr<<"try again!";
cin.clear(istream::failbit);
continue;
}
}
当我输入一个字母时,程序就陷入了无限循环,不停地输出try again!,这个cin.clear(istream::failbit);语句不是用于清除了failbit错误了吗。。
[解决办法]
cin.clear(istream::failbit);
后面加个
cin.sync(); //清空流
[解决办法]
while(cin>>i,!cin.eof())
{
if(cin.bad()){throw "bad error!";}
if(cin.fail())
{
cerr<<"try again!";
cin.clear();
cin.sync();
continue;
}
}这样就不会了
[解决办法]