注册 登录
编程论坛 C++教室

关于iostream中clear函数的疑惑

youyong407 发布于 2011-03-03 13:58, 1197 次点击
程序代码如下:
程序代码:
#include <iostream>

using namespace std;

int main()
{
    int ival;

    while (cin >> ival, !cin.eof())
    {
        if (cin.bad())
        {
        //    throw runtime_error("IO stream corrupted");
        }
        if (cin.fail())
        {
            cerr << "bad data, try again" << endl;
            cin.clear(istream::failbit);
            continue;
        }
        cout << ival << "\t";
    }

    return 0;
当cin.fail()= true时,用cin.clear(istream::failbit)处理后,后续就不能再读入数据ival了,请问这是怎么回事呢?如果想继续读入ival,怎么处理呢?
4 回复
#2
buffer2011-03-03 15:03
cin.clear(); 使用默认参数就行了
#3
youyong4072011-03-03 15:11
在vc6.0下编译还是不行的,我已经试过了。
#4
buffer2011-03-03 15:12
嗯,你还需要清空cin的缓存,用cin.sync();
#5
youyong4072011-03-03 15:23
感谢你的回答,问题解决了。
1