读书人

关于cin.clear(),该如何处理

发布时间: 2012-03-22 17:43:57 作者: rapoo

关于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;
}
}这样就不会了
[解决办法]

探讨

引用:

while(cin>>i,!cin.eof())
{
if(cin.bad()){throw "bad error!";}

if(cin.fail())
{
cerr<<"try again!";
cin.clear();
cin.sync();
continue;
}
}这样……

真的是这样,,不过为什么ci……

读书人网 >C++

热点推荐