C++primer(4版)的状态流的查询与控制
在看<<C++primer>>(4版时),测试了书上的一个例子,如下:
int main()
{
int ival;
while(cin >> ival, !cin.eof())
{
if(cin.bad())
throw runtime_error("IO stream corrupted");
if(cin.fail())
{
cerr << "bad data, try again" << endl;;
cin.clear(istream::failbit); //reset the stream
continue; //get next input
}
}
return 0;
}
输入一组整数肯定时没问题了,可输入,比如:10 20 test 30;死循环,不断输出:
bad data, try again
程序的本意是通过while()循环不段读入cin,直到到达文件末尾或者发生不可恢复的读取错去为止.字符串test赋给int型ival导致istream::failbit为真,因此需重置流的状态,而continue书上说是get next input,可是通过显示bad data, try again,说明流并没有读取下一个值,还是读取的那个错值,即test!
不懂,why?谢谢大家能看看!