IO:cin.clear() 和 cin.sync() 的区别

cin.clear是用来更改cin的状态标示符的,cin.sync是用来清除缓存区的数据流的。
如果标示符没有改变那么即使清除了数据流也无法输入。
所以两个要联合起来使用。

 

#include<iostream> #include<stdexcept> 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; }

你可能感兴趣的:(IO,Stream)