Вот два предложения по исправлению вашей проблемы:
- Добавить обработку ошибок в
cin
- Читать как строку и анализировать
ОбщееРешение - «Читать как строка» и «Разбор», но я представляю оба варианта на ваш выбор.
Добавить обработку ошибок в cin
Когда функция извлечения потока получает символ, который не подходит для чисел, она устанавливает бит fail
.Вам необходимо проверить состояние потока (cin
) на наличие ошибок.Если вы хотите продолжить, вам нужно очистить состояние ошибки.
Состояние можно проверить с помощью метода fail
: cin.fail()
.Для очистки состояния используйте: cin.clear()
.
См. Онлайн-справочник по C ++ - istream
Чтение как строка и синтаксический анализ
В качестве альтернативы читайте ввод как строку, а затем анализируйте строкудля ваших данных.Контейнер string
имеет несколько полезных методов для анализа.
Используйте getline
для чтения переменной string
из cin
.
Опять же, вам придется написать код для проверки ошибок и их обработки.