Вы не можете заставить пользователя вводить правильный ввод. Но вы можете попросить их дать другой ввод, если предыдущий был недействителен. Для этого существуют разные процедуры. Одним из них является следующее:
- Используйте
getline
для чтения строки
- Разбор и понять линию
- Если строка недействительна, дают ошибку пользователя и перейти к 1
Это хорошо и довольно часто. Однако он использует динамическую память. Другой вариант:
- Используйте
cin >> value;
, как вы обычно делаете
- Проверьте
cin.fail()
, чтобы увидеть, если вход был правильно прочитать (проверьте cin.eof()
также)
Если не удалось, игнорировать все входные данные до пробельных:
char c;
while (cin >> c)
if (isspace(c))
break;
Это имеет дополнительное преимущество, что в ошибочном вводе, как это:
abc 12.14
Вы не игнорируете всю строку, а только abc
.
sudo = "** S ** uper ** U ** ser ** DO **" (или возможно "** S ** ubstitute ** U ** ser ** DO **". Pseudo = " не настоящие". – BoBTFish