Chinaunix首页 | 论坛 | 博客
  • 博客访问: 987973
  • 博文数量: 158
  • 博客积分: 4380
  • 博客等级: 上校
  • 技术积分: 2367
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-21 10:45
文章分类

全部博文(158)

文章存档

2012年(158)

我的朋友

分类: C/C++

2012-11-19 13:23:43

记一下:

#include
#include
using namespace std;

int main()
{
    int n = 0;
    while( !(cin>>n) )
    {
        cin.clear();
        cin.ignore( numeric_limits::max(), '\n' ); // cin.sync()
    }

    cout << "------------\n" << n << endl;
    return 0;
}

阅读(1034) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

网友评论2012-11-19 13:25:16

周星星
ignore( streamsize n = 1, int_type delim = T::eof() );
的作用就是抛弃delim前n个字符,而clear只是清除错误标志位。

所以两者都需要,需要恢复正确标志位,需要把流中错误的数据抛弃掉。

网友评论2012-11-19 13:25:02

充雨
不是很明白
cin.ignore
的意思。
单单用clear为什么 不行?望解释一下,谢谢。