#c
#c
Вопрос:
почему этот цикл выполняется 3 раза при вводе числа? Я хочу, чтобы были приняты только ‘s’ или ‘m’.. как я мог это исправить?
cout << "Are you married or single (m/s): ";
cin >> status;
status = tolower(status); //converting to lower case
//validating imput for marital status
while((status != 'm') amp;amp; (status != 's'))
{
cout << "Sorry, you must enter "m" or "s" n"
<< "Are you married or single (m/s): ";
cin >> status;
status = tolower(status);
}
Ответ №1:
Вероятно, ваша переменная status
объявлена как:
char status;
Итак, cin >> status
считывает один символ из входных данных. Однако вы, вероятно, ввели более одного, потому что ввод буферизован, и вам нужно было нажать Enter.
Вместо этого используйте это объявление:
string status;
который получит всю строку ввода, а затем вы сможете проверить символы внутри строки.
Комментарии:
1. Вы должны объяснить, что 3, вероятно, из-за «a r n»
2.
rn
должно быть автоматически переведеноn
потоком (я полагаю, этоcin
происходит автоматически в текстовом режиме)…
Ответ №2:
Вы можете использовать getchar()
для сохранения в состояние, он считывает только один символ из буфера..
cout << "Are you married or single (m/s): ";
getchar(status);
//validating imput for marital status
while((status != 'm') || (status != 's')) //status can be a male OR a female
{
cout << "Sorry, you must enter "m" or "s" n"
<< "Are you married or single (m/s): ";
getchar(status);
}