Форум программистов, компьютерный форум CyberForum.ru

как работает cin.good() - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.72
XenHSE
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 18
21.02.2013, 15:27     как работает cin.good() #1
Здравствуйте. Мне необходимо организовать "защиту от дурака". Пользователь должен ввести целое число. Моя программа должна считывать вводимые данные до тех пор, пока пользователь не введет целое число.
Мой код:
C++
1
2
3
4
5
6
7
8
9
    int var1;
    for(;;)
    if (cin>>var1,cin.good())
    {
        cout<<"var1= "<<var1;
        break;
    }
    else
        cout<<"\nERROR";
В результате при вводе символа, программа зацикливается и выводит "ERROR"
Помогите, пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2013, 15:27     как работает cin.good()
Посмотрите здесь:

C++ Не работает cin
C++ не работает Cin
C++ Не работает cin
C++ Как работает Cin.ignore()
C++ Не работает ни cin.Get(), ни cin.Getline()
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
21.02.2013, 15:29     как работает cin.good() #2
C++
1
if (cin>>var1 && cin.good())
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
21.02.2013, 15:30     как работает cin.good() #3
Цитата Сообщение от XenHSE Посмотреть сообщение
В результате при вводе символа, программа зацикливается и выводит "ERROR"
Очищай биты ошибок. clear()
XenHSE
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 18
21.02.2013, 15:32  [ТС]     как работает cin.good() #4
Цитата Сообщение от Пaтрик Посмотреть сообщение
C++
1
if (cin>>var1 && cin.good())
ничего не изменилось

Добавлено через 1 минуту
Цитата Сообщение от Vourhey Посмотреть сообщение
Очищай биты ошибок. clear()
Как использовать clear?
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
21.02.2013, 15:34     как работает cin.good() #5
Цитата Сообщение от XenHSE Посмотреть сообщение
Как использовать clear?
Почитай документацию про эту функцию. Там написано.
XenHSE
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 18
21.02.2013, 15:38  [ТС]     как работает cin.good() #6
Извините, вы это имели в виду?
C++
1
2
3
4
5
6
7
8
9
10
11
12
    int var1;
    for(;;)
    if ((cin>>var1) && (cin.good()))
    {
        cout<<"var1= "<<var1;
        break;
    }
    else
    {
        cout<<"\nERROR";
        cin.clear();
    }
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
21.02.2013, 15:44     как работает cin.good() #7
C++
1
2
        cin.clear();
        cin.ignore();
это. Как пример.
XenHSE
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 18
21.02.2013, 15:56  [ТС]     как работает cin.good() #8
Спасибо большое, я поняла
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2013, 22:06     как работает cin.good()
Еще ссылки по теме:

C++ Cin.get не правильно работает
C++ Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()
Как работает cin.get() C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
bolwevik
0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 6
08.11.2013, 22:06     как работает cin.good() #9
Было бы неплохо, раз ты разобрался, то часть кода привёл бы.
У меня так в бесконечном цикле и "шурует" .

Добавлено через 13 минут
else {cout<<"Данные должны быть целочисленные!\tВведите [0] или [1]\n";cin.clear();cin.sync();Proverka();}

Вот так работает так как я хочу. Спасибо всем.
Yandex
Объявления
08.11.2013, 22:06     как работает cin.good()
Ответ Создать тему
Опции темы

Текущее время: 13:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru