Форум программистов, компьютерный форум 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. Просмотров 2421. Ответов 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 : ";
    }
Спасибо за понимание
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2014, 00:57     Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Посмотрите здесь:
Cin.clear cin.ignore C++
C++ Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами
Почему не работает cin.clear() и как работает sync()? C++
C++ cin.get() и cin.clear()
C++ Для чего в код вводится cin.ignore после того, как cin>> уже сработало?
C++ Объект cin и его метод cin.get()
C++ Отличие функции cin.get и cin.getline
Проверка ошибок при вводе (cin) C++
Cin.clear() не работает? C++
C++ Пробел при вводе данных c применением cin
При вводе данных программа пропускает операции cin C++
cin.getline и cin.ignore C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Модератор
Эксперт CЭксперт С++
13054 / 7317 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
03.03.2016, 09:26     Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync #3
Цитата Сообщение от Lite_OnE Посмотреть сообщение
cin.clear() - восстанавливает поток
Сбрасывает "флаги ошибок". Ничего не восстанавливает.
Цитата Сообщение от Lite_OnE Посмотреть сообщение
cin.sync() - очищает буфер
Поведение этого чуда вообще зависит от реализации,
так что нельзя точно сказать что оно делает.
Цитата Сообщение от Donville Посмотреть сообщение
Объясните, пожалуйста, ПОПУЛЯРНО.
Объясняю. Такая обработка ошибок приведет к зацикливанию
на другой реализации потоковых классов.
Ответ Создать тему
Опции темы

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