Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.72
XenHSE
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 18
#1

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

21.02.2013, 15:27. Просмотров 7934. Ответов 8
Метки нет (Все метки)

Здравствуйте. Мне необходимо организовать "защиту от дурака". Пользователь должен ввести целое число. Моя программа должна считывать вводимые данные до тех пор, пока пользователь не введет целое число.
Мой код:
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"
Помогите, пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2013, 15:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос как работает cin.good() (C++):

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear() - C++
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до этого c++ не изучал, поэтому возникали некоторые проблемы....

Do while и cin.good - C++
Добрый день. Было дано задание вывести конкретные числа, с чем справился, но требуется возможность запустит программу заново ( как я понял,...

Почему не работает cin.clear() и как работает sync()? - C++
#include&lt;iostream&gt; #include&lt;cstring&gt; using namespace std; char*input(char*ch,int&amp;n){ cin.getline(ch,20); //cin.sync(); ...

Как работает cin.get() - C++
Решил посмотреть как работает cin.get(). Тупо тянет символы из буфера. В конструкторе не нашёл &quot;привязки буфера к stdin&quot; или вызовов...

Как работает Cin.ignore() - C++
Дочитал до главы &quot;Потоки и файлы&quot; и с первого примера началось не понимание. Вот пример: #include &lt;iostream&gt; using namespace...

Не работает ни cin.Get(), ни cin.Getline() - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &quot;windows.h&quot; #include &quot;string.h&quot; using namespace::std; const...

8
Пaтрик
417 / 392 / 39
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
21.02.2013, 15:29 #2
C++
1
if (cin>>var1 && cin.good())
0
Vourhey
Почетный модератор
6488 / 2262 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
21.02.2013, 15:30 #3
Цитата Сообщение от XenHSE Посмотреть сообщение
В результате при вводе символа, программа зацикливается и выводит "ERROR"
Очищай биты ошибок. clear()
1
XenHSE
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 18
21.02.2013, 15:32  [ТС] #4
Цитата Сообщение от Пaтрик Посмотреть сообщение
C++
1
if (cin>>var1 && cin.good())
ничего не изменилось

Добавлено через 1 минуту
Цитата Сообщение от Vourhey Посмотреть сообщение
Очищай биты ошибок. clear()
Как использовать clear?
0
Vourhey
Почетный модератор
6488 / 2262 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
21.02.2013, 15:34 #5
Цитата Сообщение от XenHSE Посмотреть сообщение
Как использовать clear?
Почитай документацию про эту функцию. Там написано.
1
XenHSE
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 18
21.02.2013, 15:38  [ТС] #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();
    }
0
Vourhey
Почетный модератор
6488 / 2262 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
21.02.2013, 15:44 #7
C++
1
2
        cin.clear();
        cin.ignore();
это. Как пример.
1
XenHSE
0 / 0 / 0
Регистрация: 20.02.2013
Сообщений: 18
21.02.2013, 15:56  [ТС] #8
Спасибо большое, я поняла
0
bolwevik
0 / 0 / 0
Регистрация: 09.01.2013
Сообщений: 6
08.11.2013, 22:06 #9
Было бы неплохо, раз ты разобрался, то часть кода привёл бы.
У меня так в бесконечном цикле и "шурует" .

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

Вот так работает так как я хочу. Спасибо всем.
0
08.11.2013, 22:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2013, 22:06
Привет! Вот еще темы с ответами:

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync - C++
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита от дурака&quot; на ввод. Не пойму предназначение cin.get() !=...

Для чего в код вводится cin.ignore после того, как cin>> уже сработало? - C++
Доброго времени суток! Просматриваю простой код. Вводится строка типа string: фунты и дюймы Затем значения переводится в типы int и...

Как работает cin.ignore(), именно в том случае, когда он написан без параметров? - C++
Объясните, пожалуйста, как работает cin.ignore(), именно в том случае, когда написан без параметров заранее спасибо!

Функция cin.get(array, 80) работает в одной программе, но не работает в другой - C++
Добрый день. Я что то совсем запутался, одна и та же функция в одной программе работает, а в другой нет. В этой программе...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru