I posted a question о том, как получить пользовательский ввод, такой как ДА или НЕТ, для управления потоком программы, используя инструкции if else, я получил ответ и теперь я на шаг ближе к созданию этой работы, однако еще одна проблема возникла, мне действительно нужно, чтобы позволить несколько входов, например, это то, что им пытаются:Предоставление нескольких типов ввода для различных форм «да» и «нет» в C++
if (input == ("YES" || "yes" || "y" || "Yes" || "Y"))
{
cout << "you said yes" << endl;
}
else if (input == "NO", "no", "n", "No","N")
{
cout << "you said no" << endl;
}
else
{
cout << "ERROR!!!" << endl;
}
Кирил Киров отправил этот код, который может help:
if(std::string::npos != input.find("no"))
, но я не мог заставить его работать, и roger pate предложил это :
if (prompt && cin.tie()) {
*cin.tie() << prompt << (default_yes ? " [Yn] " : " [yN] ");
Однако я никогда не пробовал это, так как его сложность намного превосходит мое понимание. я надеялся на решение начинающий программист может понять или, может быть, им просто очень медленно ученика
EDIT: Я сделал эту модификацию, но она по-прежнему не работает лучше, чем раньше, если я дать неправильно дело не идет к другой (ошибке) и нет, где добавить больше слов, (например, NO N нет нет):
cout << "\nYES or NO" << endl;
string input ="";
cin >> input;
if (std::string::npos != input.find("yes"))
{
cout << "you said yes" << endl;
}
else if (std::string::npos != input.find("no"))
{
cout << "you said no" << endl;
}
else
{
cout << "ERROR!!!" << endl;
}
Что можно сказать о 'станд :: строка :: find' решение может не получить работу? –
«Я не мог заставить его работать» не говорит нам многого - можете ли вы быть более конкретным? –
+1, потому что кто-то запустил без причины –