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;
}
很不错,谢谢分享
其实很多人都不知道,汗
挺好的
博主好人~
新手用到cin.getline老是出错
多亏了博主这样热心的高手的存在呢O(∩_∩)O~
目前还没用到过cin.clear和cin.sync,学习了
对C++真知道不是很多
分享是精神,支持
[reply=任侠,2010-10-04 08:29 AM]呵呵,就是互相学习了[/reply]
对这方面不大了解,不过还是要顶下
只有需要的人才能体会
[face_02]没看清这个表情符号上面写的啥,可能是很cool吧
博主写明了是干吗用的,我也看不明白,一抹黑啊,呵呵
呵呵 学习下
我想一般人都不知道
[reply=任侠,2010-09-24 06:44 PM]会用到的人自然会知道用处的,只有出问题了才会有人查找
还有这个我想你应该看一下,和你有点关系的:
http://lzw.me/article.asp?id=1214%5B/reply%5D
博主没说清楚是干嘛用的