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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.57
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 112
27.02.2014, 00:57     Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync #1
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная "защита от дурака" на ввод. Не пойму предназначение
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 : ";
    }
Спасибо за понимание
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2014, 00:57     Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Посмотрите здесь:

C++ Не очищается поток после cin.clear()
C++ Сброс состояния буфера cin.clear
C++ cin.get() и cin.clear()
C++ Пробел при вводе данных c применением cin
Cin.clear cin.ignore C++
Почему не работает cin.clear() и как работает sync()? C++
Проверка ошибок при вводе (cin) C++
C++ Некорректная работа cin.fail() при вводе смешанных данных

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lite_OnE
0 / 0 / 0
Регистрация: 19.12.2015
Сообщений: 5
02.03.2016, 17:49     Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync #2
cin.clear() - восстанавливает поток, если вместо числа были введены, например буквы (пытались прочитать число, а там буквы)
cin.sync() - очищает буфер (там же написано )
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11838 / 6817 / 771
Регистрация: 27.09.2012
Сообщений: 16,910
Записей в блоге: 2
Завершенные тесты: 1
03.03.2016, 09:26     Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync #3
Цитата Сообщение от Lite_OnE Посмотреть сообщение
cin.clear() - восстанавливает поток
Сбрасывает "флаги ошибок". Ничего не восстанавливает.
Цитата Сообщение от Lite_OnE Посмотреть сообщение
cin.sync() - очищает буфер
Поведение этого чуда вообще зависит от реализации,
так что нельзя точно сказать что оно делает.
Цитата Сообщение от Donville Посмотреть сообщение
Объясните, пожалуйста, ПОПУЛЯРНО.
Объясняю. Такая обработка ошибок приведет к зацикливанию
на другой реализации потоковых классов.
Yandex
Объявления
03.03.2016, 09:26     Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Ответ Создать тему
Опции темы

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