0 / 0 / 1
Регистрация: 05.09.2014
Сообщений: 94
1

Отбрасывание "мусорных" данных при вводе числа через cin

19.06.2018, 22:53. Показов 728. Ответов 2
Метки нет (Все метки)

Имеется задача, когда необходимо ввести с клавиатуры число и обработать его.
Если делать классический ввод
C++
1
2
3
int i=0;
cout << "Input number:" << endl;
cin >> i;
то при вводе "34y" или "865de45" cin считает числовую часть, при этом не обратит внимание, на то, что за числом едет еще и "мусор".
Существует ли красивый способ обработки таких ситуаций (чтобы он не считал за нормальную ситуацию ввод, где есть отличные от цифр знаки)?
Мне в голову приходит только считывать как строку и потом разбирать посимвольно, но мне кажется это далеко не оптимальный вариант.
Заранее спасибо за ответы!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2018, 22:53
Ответы с готовыми решениями:

Нужно сделать так, чтобы при вводе числа, выводило "рублей" или "рубль"
Начал решать задачу и засох на средине, не выходить формулу написать,если не сложно,подскажите) с...

Составить программу, которая при вводе символа с клавиатуры выво-дит "латинская буква" при вводе латинской буквы и "не латинская бук-ва" во всех остал
Составить программу, которая при вводе символа с клавиатуры выво-дит &quot;латинская буква&quot; при вводе...

Ввести один из символов "Y" или "n". При вводе "Y" вывести на экран слово "Да", а при вводе "n" слово "нет"
1.Ввести один из символов &quot;Y&quot; или &quot;n&quot;. При вводе &quot;Y&quot; вывести на экран слово &quot;Да&quot;, а при вводе...

При вводе числа должна добавляться соответствующая запись "год", "года" или "лет" без ограничений в 100 лет
Помогите написать код, под java в котором при вводе числа будет добавляться соответствующая запись...

2
nd2
3419 / 2799 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
19.06.2018, 23:16 2
C++
1
2
3
4
5
6
7
8
// в строке правильного ввода только целое число, перед которым могут быть пробельные символы, + или -.
int a;
while (!(cin >> a) || (cin.peek() != '\n'))
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Input error! Retry input" << endl;
}
0
0 / 0 / 1
Регистрация: 05.09.2014
Сообщений: 94
20.06.2018, 00:29  [ТС] 3
Цитата Сообщение от nd2 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
// в строке правильного ввода только целое число, перед которым могут быть пробельные символы, + или -.
int a;
while (!(cin >> a) || (cin.peek() != '\n'))
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Input error! Retry input" << endl;
}
Спасибо!
А почему здесь нужен именно while а не if, например?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2018, 00:29

Диалоговые окна: при вводе данных в поля "К_во" и "Розничная цена" отображать в QLabel их произведение
Есть форма добавления товара. Так вот, как сделать так чтобы при вводе данных в поля &quot;К_во&quot; и...

Открытие "мусорных" сайтов при запуске компьютера
Здравствуйте! При запуске компьютера открывается мой браузер (Яндекс.Браузер) и вкладка с...

Не выполняется команда в коде при вводе числа со знаком "минус" в консоли
Добрый вечер! Друзья, возникла следующая проблема в коде: string duf; ...

При вводе числа в диапазоне от 1 до 99 добавить к нему слово "копейка" в правильном падеже
Написать программу которая при вводе числа в диапазоне от 1 до 99 добавляет к нему слово &quot;копейка&quot;...


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

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

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