cin.clear(istream:failbit)和cin.clear()的区别解决方案

cin.clear(istream::failbit)和cin.clear()的区别
while(in>>ival,!in.eof())
{
if(in.bad ())
throw runtime_error("stream corrupted");
if(in.fail ())
{
cerr<<"bad data,try again"<<endl;
  in.clear (istream::failbit );
in.ignore (1024,'\n');
continue;

}
cout<<ival<<endl;
  }
问题被讨论过很多次,用in.clear(),程序正常运行,
不过我发现当用in.clear(istream::failbit)时候,非法输入情况下,程序竟然是死循环,没有输入阶段

?搞不清楚原因。。。,请大神解答

------解决方案--------------------
istream::failbit
The last input operation failed because of an error related to the internal logic of the operation itself.
找点资料你看下