161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
||||||
1 | ||||||
Некорректная работа cin.fail() при вводе смешанных данных30.01.2016, 21:52. Показов 3721. Ответов 8
Метки нет Все метки)
(
Дарова, у меня есть код, где присутствует проверка на ввод неправильных данных(в моем случае всяких букв), но работает она не так, как мне бы хотелось. У меня пользователь должен ввести стоимость детали, и у меня, как я уже сказал, есть проверка на ввод неправильных данных (букв), но дело в том, что если я ввожу СНАЧАЛА цифры какие-то, а ПОТОМ буквы, то программа думает, что ошибок нету и пропускает дальше. Так вот, как мне сделать так, чтобы программа искала в вводе данных любой намек на буквы и не пропускала дальше?
Вот код:
0
|
|
30.01.2016, 21:52 | |
Ответы с готовыми решениями:
8
Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync Некорректная работа программы,при вводе отрицательного числа Пробел при вводе данных c применением cin При вводе данных программа пропускает операции cin |
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
|
30.01.2016, 21:56 [ТС] | 2 |
0
|
3433 / 2812 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
|
||||||
30.01.2016, 22:23 | 3 | |||||
0
|
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
|
30.01.2016, 22:25 [ТС] | 4 |
0
|
3433 / 2812 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
|
||||||
30.01.2016, 22:27 | 5 | |||||
Для твоего кода так пробуй:
0
|
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
|
30.01.2016, 22:38 [ТС] | 6 |
Спасибо огромное)
Добавлено через 8 минут О, а пока ты тут. Не скажешь, как работает cin.peek(), если не трудно? Потому что вся документация какая-то странная, без cin.peek() он будет пропускать, если я пробел поставлю, но почему? Он же следующий символ проверяет, или нет?
0
|
3433 / 2812 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
|
|
30.01.2016, 23:02 | 7 |
![]() Решение
Вопрос не очень понял. Да, проверяет следующий символ. Если ввод правильный (до '\n', или, как в твоём примере на скрине, до первой не цифры), но в строке ввода дальше не '\n' (т.е., до '\n' есть ещё не цифры), то будет считаться ошибкой.
Добавлено через 3 минуты Какие не цифры до '\n' - это не важно. Пробел, или любая другая не цифра - всё равно будет считаться ошибкой. Добавлено через 4 минуты Или тебе нужно, чтобы если только пробелы, в строке ввода, после числа, то не считалось за ошибку?
0
|
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
|
30.01.2016, 23:32 [ТС] | 8 |
0
|
3433 / 2812 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
|
||||||
30.01.2016, 23:50 | 9 | |||||
Вот вариант, если впереди и позади числа только пробелы, то будет считаться, что нет ошибки:
0
|
30.01.2016, 23:50 | |
Помогаю со студенческими работами здесь
9
Некорректная работа cin.fileget() Отбрасывание "мусорных" данных при вводе числа через cin cin.eof и cin.fail Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |