|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.10.2017, 17:56 | #1 |
Пользователь
Регистрация: 22.09.2017
Сообщений: 45
|
cin.good в цикле while
В общем то ли я дурак,то ли лижи не едут, есть цикл do while который должен проверять ввел ли человек число и если обнаруживает что-то другое повторять запрос ввода,до тех пор пока не получит число, но он почему-то зацикливается бесконечно если получает что-то помимо числа
int x; do{ cout<<"Введите число"<<endl; cin>>x; }while(!cin.good()); вот в чем проблема? возможно я неправильно понимаю как работает cin.good(), по идее он смотрит что ты ввел и если ты ввел тип отличный от запрашиваемого то выдает false если типы совпадают то true |
12.10.2017, 18:08 | #2 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
Скорее всего, нада в начале цикла (после do сразу) добавить сброс битов ошибки. Код:
Последний раз редактировалось alexzk; 12.10.2017 в 18:15. |
|
12.10.2017, 19:51 | #3 |
Пользователь
Регистрация: 22.09.2017
Сообщений: 45
|
bool test=true;
do { cout << "Введите число:" << endl; cin>>op1; if ( !(test=cin.good()) ) cout << "Вы ввели не число!" << endl; cin.clear() ; cin.ignore(numeric_limits<streamsiz e>::max(),'\n') ; } while(!test); Да уже разобрался,вот такую фигню наворатил,оставлю тут,может кому поможет |
12.10.2017, 19:55 | #4 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
|