Я думаю, что Джеймс Макнеллис дает хорошее объяснение, почему вы будете использовать любой случай. Лично, если вы задаете вопрос «да/нет», я считаю, что единственный символ проще, поскольку он минимизирует количество различных сценариев, с которыми вам приходится иметь дело.
Вот некоторые примеры кода, которые можно использовать, чтобы прочитать ответ от пользователя с помощью одного символа:
#include <iostream>
#include <limits>
using namespace std;
int main()
{
//keep looping until the user enters something valid
while(true)
{
char answer;
cout << "Does this sound good (y/n)? ";
cin >> answer;
if(answer == 'y' || answer == 'Y')
{
//user entered yes, do some stuff and leave the loop
cout << "You answered yes!" << endl;
break;
}
else if(answer == 'n' || answer == 'N')
{
//user entered no, do some stuff and leave the loop
cout << "You answered no!" << endl;
break;
}
else
{
cout << "You did not enter a valid answer. Please try again." << endl;
//if we got bad input (not 'y'/'Y' or 'n'/'N'), wipe cin and try again
cin.clear();
cin.ignore(numeric_limits<int>::max(),'\n');
}
}
}
Если вы планируете на чтение более одного ответа персонажа, хотя, я думаю, что вы вероятно, отлично с getline
и так рассуждать.
Почему не вы используя формат 'std :: cin >> somestr'? –
Что случилось с тем, как я его написал? – Tek
@Amir: Обратите внимание, что существует разница между двумя: 'std :: getline (stream, string)' будет читать символы из потока до тех пор, пока не будет прочитана новая строка; 'stream >> string' будет считывать символы из потока до чтения пробела. –