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

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

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

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

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

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

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

Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? - C++
Почему функцию sqrt нельзя применять к int переменным, а только к double и float? Извините за опечатку в названии темы.

Почему не происходит ввод? (cin) - C++
Здравствуйте. Скажите, пожалуйста, почему нету приглашения ввести переменную s? int main() { cout&lt;&lt;&quot;Enter digits, for exit...

Почему игнорируется cin.getline() в классе? - C++
Вот конструктор класса. При вызове конструктора создаётся односвязный список и данные вводятся с клавиатуры. Почему-то не работает функция...

Почему не определяются cout, cin, endl, system? - C++
int i,n,k1,k2; float min,s=0; cout&lt;&lt;&quot; n=&quot;; cin&gt;&gt;n; float* a=new float ; cout&lt;&lt;&quot; Enter elements: &quot;; ...

2
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
10.12.2011, 12:28 #2
Будет проще, если ты скажешь какой алгоритм ты хочешь реализовать

А так на первый взгляд написана полная фигня
0
MegaEvgeniy
8 / 8 / 0
Регистрация: 06.11.2011
Сообщений: 113
10.12.2011, 15:38  [ТС] #3
odip,

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

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

Что же происходит с потоком ? Почему если я уберу std::cin.get() , то у меня появляется это недоразумение, и почему при новой итерации цикла (с помощью оператора continue) не просит ещё раз ввести со стандартном устройства ввода в переменную bolsh ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2011, 15:38
Привет! Вот еще темы с ответами:

cin получил char вместо double и while зациклился. Почему? - C++
Привет! Решил задачу из книги Шилдта. &quot;Годы Юпитера в Земные&quot; Захотел проверить, что произойдет, если пользователь ошибется и вместо...

Почему портится поток cin при использовании функции getline - C++
char a; cin.getline(a,5); cin.clear(); При вводе свыше 5 символов после функции getline надо вызывать функцию clear() иначе...

Объясните, почему окно закрывается даже при cin.get(); хотя код правильный? - C++
Ладно если не сложно ответе мне пожалуйста почему в данном коде выделяет ошибкой #include &lt;iostream&gt; using namespace std; int main() ...

при некорректном вводе cin далее уже не принимает ввод, не понимаю почему? - C++
В условии if (cin &gt;&gt; A &gt;&gt; B) {...} при некорректном вводе cin далее уже не принимает ввод, не понимаю почему. Вот строчки int main() ...


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

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

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