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

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

Войти
Регистрация
Восстановить пароль
 
MegaEvgeniy
7 / 7 / 0
Регистрация: 06.11.2011
Сообщений: 113
#1

Почему необходимо применять cin.get() - C++

10.12.2011, 00:19. Просмотров 628. Ответов 2
Метки нет (Все метки)

Почему необходимо применять cin.get() ? В книге Липмана вообще не упоминается cin.get(), а без неё идёт бесконечный вывод строки ошибки

Есть ли способ избежать множественного повторения вывода строки ошибки, если ,например, долнжно введено быть целочисленное значение, а когда ввожу например adsdasdsa, то он столько раз повторяет строку ошибки, сколько недопустимых значений я ввёл (((
C++
1
2
3
4
5
6
7
8
9
10
11
unsigned bolsh;
while(std::cin >> bolsh, !std::cin.eof()){
    if (std::cin.fail()){
  std::cerr << "Ошибка! Введите целое число: " << std::flush;
  std::cin.clear();
  std::cin.get();
  continue;
}
    std::cout << "TestResult";
    break;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2011, 00:19     Почему необходимо применять cin.get()
Посмотрите здесь:

Уточняющий вопрос: почему при перегрузке оператора [] необходимо возвращать ссылку? C++
C++ Почему портится поток cin при использовании функции getline
cin получил char вместо double и while зациклился. Почему? C++
Почему игнорируется cin.getline() в классе? C++
C++ Почему не определяются cout, cin, endl, system?
Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? C++
C++ Объясните, почему окно закрывается даже при cin.get(); хотя код правильный?
C++ Почему не происходит ввод? (cin)
Почему cin не смогла обработать ESC, а getche() смогла? C++
при некорректном вводе cin далее уже не принимает ввод, не понимаю почему? C++
C++ Почему clear необходимо использовать до seekg?
C++ Почему с помощью std::cin не получается считать с клавиатуры массив пользовательского типа?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
10.12.2011, 12:28     Почему необходимо применять cin.get() #2
Будет проще, если ты скажешь какой алгоритм ты хочешь реализовать

А так на первый взгляд написана полная фигня
MegaEvgeniy
7 / 7 / 0
Регистрация: 06.11.2011
Сообщений: 113
10.12.2011, 15:38  [ТС]     Почему необходимо применять cin.get() #3
odip,

"Ошибка! Введите целое число: "

Вот эта строка бесконечно выводится на стандартном устройстве вывода, если я ввожу недопустимое значение (например литеральную строку или литеральный символ, кроме целых чисел).

Что же происходит с потоком ? Почему если я уберу std::cin.get() , то у меня появляется это недоразумение, и почему при новой итерации цикла (с помощью оператора continue) не просит ещё раз ввести со стандартном устройства ввода в переменную bolsh ?
Yandex
Объявления
10.12.2011, 15:38     Почему необходимо применять cin.get()
Ответ Создать тему
Опции темы

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