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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.57
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 113
#1

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync - C++

27.02.2014, 00:57. Просмотров 2481. Ответов 2
Метки нет (Все метки)

Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная "защита от дурака" на ввод. Не пойму предназначение
C++
1
cin.get() != '\n'
C++
1
 cin.clear()
C++
1
cin.sync()
Объясните, пожалуйста, ПОПУЛЯРНО.

C++
1
2
3
4
5
6
7
8
9
int i;
    cout<<"Enter int : ";
    while(!(cin>>i) || cin.get() != '\n') 
    {
        cout<<"IDIOT !! Enter again !\n";
        cin.clear(); // сбрасывает все биты потока, тоесть поток становится "хорошим"
        cin.sync();//Удалим данные из буффера
        cout<<"Enter int : ";
    }
Спасибо за понимание
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2014, 00:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync (C++):

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

Cin.clear cin.ignore - C++
Как использовать cin.clear и cin.ignore?

Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами - C++
Нужна помощь. Задача продемонстрировать различие между вводом с помощью cin.get и cin.getline с тремя параметрами, как из потока достать...

Почему не работает 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() и cin.clear() - C++
В общем, занимаюсь по видео-урокам на ютубе, дошли до темы &quot;массивы&quot;. Суть программы - вывести наибольший и наименьший элемент (его...

Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода - C++
Почему в моем случае getline(cin, m) не срабатывает без cin.ignore() ? Если по коду есть какие-нибудь замечания, то просьба написать что не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Lite_OnE
0 / 0 / 0
Регистрация: 19.12.2015
Сообщений: 5
02.03.2016, 17:49 #2
cin.clear() - восстанавливает поток, если вместо числа были введены, например буквы (пытались прочитать число, а там буквы)
cin.sync() - очищает буфер (там же написано )
0
Croessmah
Эксперт CЭксперт С++
13202 / 7473 / 839
Регистрация: 27.09.2012
Сообщений: 18,367
Записей в блоге: 3
Завершенные тесты: 1
03.03.2016, 09:26 #3
Цитата Сообщение от Lite_OnE Посмотреть сообщение
cin.clear() - восстанавливает поток
Сбрасывает "флаги ошибок". Ничего не восстанавливает.
Цитата Сообщение от Lite_OnE Посмотреть сообщение
cin.sync() - очищает буфер
Поведение этого чуда вообще зависит от реализации,
так что нельзя точно сказать что оно делает.
Цитата Сообщение от Donville Посмотреть сообщение
Объясните, пожалуйста, ПОПУЛЯРНО.
Объясняю. Такая обработка ошибок приведет к зацикливанию
на другой реализации потоковых классов.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2016, 09:26
Привет! Вот еще темы с ответами:

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

Объект cin и его метод cin.get() - C++
Вот код программы: #include &lt;iostream.h&gt; #pragma hdrstop ...

Отличие функции cin.get и cin.getline - C++
Добрый день! Изучаю функции get и getline, сказано, что они отличаются тем, что функция get считывает символ разрыва строк и оставляет...

Проверка ошибок при вводе (cin) - C++
Привет, у меня тут при вводе фигня какая-то происходит. Вот код: int width; while (true) { cin &gt;&gt; width; if (cin.good()) ...


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

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

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