共计 230 个字符,预计需要花费 1 分钟才能阅读完成。
cin.clear是用来更改cin的错误状态状态标示符,cin.sync是用来清除缓存区的数据流。
如果标示符没有改变那么即使清除了数据流也无法输入。
所以两个需要联合起来使用。#include
#include
using namespace std;
int main()
{
int ival;
while(1) {
cin >> ival;
if ( cin.bad())
throw runtime_error("IO stream corrupted") ;
if ( cin.fail()) {
cerr << "bad data, try again" << endl; cin.clear(); cin.sync(); continue; } } return 0;}
正文完