Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Почему cin срабатывает только один раз?


Автор: KPEHDEL 14.9.2012, 22:12
Здравствуйте. Есть такой кусок простого кода:
Код

void Caesar::input_indent() {
    bool flag = false;
    while( !flag ) {
        cout<<"Укажите сдвиг: \n"<<endl;
        cin>>indent;
        if( !cin ) {
            cout << "Ошибка ввода.";
            indent = 0;
        } else {
            flag = true;
        }
    }
}


Цель этого куска, выводить уведомление, если ввели не int.

Запускаю, предлагает ввести сдвиг. Ожидает.
Если ввожу допустим буквы, оно за место того, чтобы опять предложить ввести сдвиг и ожидать, зацикливается будто там нет cin.

Код

Укажите шаг:
Ошибка ввода.
Укажите шаг:
Ошибка ввода.
Укажите шаг:
Ошибка ввода.
и т.д.


Подскажите пожалуйста, в чём проблема?
С нетерпением жду вашего ответа.

Автор: feodorv 15.9.2012, 02:59
Посмотрите http://www.chg.fatal.ru/misc/prog-cpp/prog_137.html smile 

Автор: KPEHDEL 15.9.2012, 08:46
Спасибо, помогло.
Сделал так:
Код

cin.clear();
cin.ignore(cin.rdbuf()->in_avail());

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)