C++中cin.clear() 和 cin.sync() 的使用区别

30,894次阅读
13 条评论

共计 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;}

正文完
 0
任侠
版权声明:本站原创文章,由 任侠 于2010-09-24发表,共计230字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(13 条评论)
验证码
clipextensions 评论达人 LV.1
2011-10-18 05:28:51 回复

很不错,谢谢分享

     中国江苏省南京市电信
quilts 评论达人 LV.1
2011-09-26 16:00:44 回复

其实很多人都不知道,汗

     中国江苏省南京市电信
birkenstockSandals 评论达人 LV.1
2011-05-10 17:23:02 回复

挺好的

     中国福建省莆田市电信
。。
2011-01-04 02:12:59 回复

博主好人~
新手用到cin.getline老是出错
多亏了博主这样热心的高手的存在呢O(∩_∩)O~

     中国浙江省杭州市电信
lazywen 评论达人 LV.1
2010-10-10 05:37:20 回复

目前还没用到过cin.clear和cin.sync,学习了

     中国天津天津市联通
400电话 评论达人 LV.1
2010-09-27 22:48:19 回复

对C++真知道不是很多

     中国安徽省阜阳市电信
王光卫中文博客 评论达人 LV.1
2010-09-26 23:22:57 回复

分享是精神,支持
[reply=任侠,2010-10-04 08:29 AM]呵呵,就是互相学习了[/reply]

     中国重庆重庆市电信
uggboots 评论达人 LV.1
2010-09-26 22:32:45 回复

对这方面不大了解,不过还是要顶下

     中国安徽省合肥市电信
飞猪 评论达人 LV.2
2010-09-26 03:31:51 回复

只有需要的人才能体会

     中国广东省深圳市电信
Leyeang 评论达人 LV.1
2010-09-25 18:13:40 回复

[face_02]没看清这个表情符号上面写的啥,可能是很cool吧

博主写明了是干吗用的,我也看不明白,一抹黑啊,呵呵

     中国北京北京市电信
猪猪懒人窝 评论达人 LV.1
2010-09-25 06:15:31 回复

呵呵 学习下

     中国河南省郑州市联通
卢松松 评论达人 LV.1
2010-09-25 01:30:05 回复

我想一般人都不知道

[reply=任侠,2010-09-24 06:44 PM]会用到的人自然会知道用处的,只有出问题了才会有人查找
还有这个我想你应该看一下,和你有点关系的:
http://lzw.me/article.asp?id=1214%5B/reply%5D

     中国北京北京市联通
卢松松 评论达人 LV.1
2010-09-25 01:29:18 回复

博主没说清楚是干嘛用的

     中国北京北京市联通