if else ステートメントを使用してプログラムのフローを制御するために YES や NO などのユーザー入力を取得する方法について質問を投稿しました。回答を得て、これを機能させることに一歩近づきましたが、別の問題が発生しました。私は本当に複数の入力を許可する必要があります。たとえば、これは私がしようとしているものです:
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;
}
Kiril Kirov は、役立つ次のコードを投稿しました。
if( std::string::npos != input.find( "no" ) )
しかし、私はそれを機能させることができず、ロジャー・パテがこれを提案しました:
if (prompt && cin.tie()) {
*cin.tie() << prompt << (default_yes ? " [Yn] " : " [yN] ");
ただし、その複雑さは私の理解をはるかに超えているため、これを試したことはありません。私は、初心者のプログラマーが理解できる解決策を望んでいました。
EDIT:私はこの変更を行いましたが、以前よりもうまく機能しません。間違ったケースを指定すると、else(エラー)になり、単語を追加する場所がありません(NO N NO NOなど):
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;
}