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

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

点赞 (1)
  1. clipextensions说道:

    很不错,谢谢分享

  2. quilts说道:

    其实很多人都不知道,汗

  3. 。。说道:

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

  4. lazywen说道:

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

  5. 400电话说道:

    对C++真知道不是很多

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

  7. uggboots说道:

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

  8. 飞猪说道:

    只有需要的人才能体会

  9. Leyeang说道:

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

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

  10. 卢松松说道:

    我想一般人都不知道

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

  11. 卢松松说道:

    博主没说清楚是干嘛用的

回复 lazywen 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code