istream clear() не работает (не сбрасывает failbit)
От: Astral29 Эстония  
Дата: 09.06.07 15:52
Оценка:
Здравствуйте.

Не подскажете, почему failbit не сбрасывается? Вот пример кода:


#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int ival;

    while (cin >> ival, !cin.eof())
    {
        if (cin.bad())
            throw runtime_error("istream corrupted.");
        if (cin.fail())
        {
            cout << "wrong data. enter again\n";
            cin.clear(istream::failbit);
            continue;
        }

        cout << "Your number is: " << ival << endl;
    }

    system("PAUSE");
    return EXIT_SUCCESS;
}


Если вводишь не число, а например слово (букву), то выставляется failbit, а вот сбрасываться он
никак не хочет. Что я делаю не так? Вроде всё верно. Проверялось на MS VStudio Express 2005.

Заранее спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.