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


Автор: tigger 17.9.2005, 08:27
Существует такая проблема, в этом куске кода ввожу числа все нормально работает
ввожу символы переходит в бесконечный цикл, оператор cin >> dx; игнорируется в чем дело, как от этого избавиться или отловить ввод символов, или что-то еще или другую конструкцию сделать посоветуйте.

Код

int dx;
do
{
cout << "введите шаг рисования кругов (1..25) ";
cin >> dx;
} while ((dx > 25) || (dx < 1));

Автор: BreakPointMAN 17.9.2005, 12:25
попробуй что-то вроде этого:
Код

int dx;
do
   {
    cout << "введите шаг рисования кругов (1..25) ";
    cin >> dx;
    if(cin.fail())
       {
        cin.clear();
        cin.ignore( cin.rdbuf()->in_avail());
       }
   } while ((dx > 25) || (dx < 1));

Автор: tigger 17.9.2005, 14:16
Огромное спасибо все работает если не сложно объясни что это за конструкция

Код

if(cin.fail())              //-- это понятно ошибка ввода
       {
        cin.clear();     //--это тоже очистка потока
        cin.ignore( cin.rdbuf()->in_avail()); //--?????
       }

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