C++ cin.clear(); cin.ignore возвращают 0

158
04 декабря 2019, 20:20

Доброй ночи. Вопрос от новичка. Есть программа, она что-то делает. Для чего-то она берет от пользователя данные и пишет в переменную типа int. Разумеется, при вводе чего -то отличного от целого числа она уходит в цикл. Нашел на просторах интернета неплохое решение по обработке ввода:

int a; 
cin >> a; 
cin.clear(); 
cin.ignore(numeric_limits<streamsize>::max(), '\n');

Все работает, вроде даже принцип понял. Но есть одно маленькое НО. По задумке при вводе "0" программа завершает работу. При любом не корректном вводе из cin извлекается 0 и управляющая конструкция успевает его скушать и завершить работу программы. :) как можно выкрутиться из этой ситуации не меняя логику работы? (поставить выход на 9 вместо ноля - первое о чем я подумал).

READ ALSO
Права администратора в Qt

Права администратора в Qt

Есть приложение на Qt, и обычно располагается в Program FilesВ некоторых случаях, когда запускается программа, она запрашивает/не запрашивает права...

139
Как добавить текст в TextView через Loader?

Как добавить текст в TextView через Loader?

Сейчас изучаю потоки в андроид, и мое задание - сделать счетчик, который добавляет числа от 0 до 9 в TextView через LoaderПонятно, что Loader нужен для...

234
Нужна помощь с заданием [закрыт]

Нужна помощь с заданием [закрыт]

В логе службы есть N записей, в которых указано, что в i-й момент времени Васина программа потребляла Ai мегабайт памятиЕсли в какой-то момент...

135
Если в классе создаю конструктор - не могу наследовать класс, что можно сделать?

Если в классе создаю конструктор - не могу наследовать класс, что можно сделать?

Error: java: constructor Salad in class Salad cannot be applied to given types; required: int found: no arguments reason: actual and formal argument lists differ in length

110