しかし、私は「こんにちは」などの文章や単語を入れたときに、それがコード壊れる(出力は「決定を下す?」無限回)
あなたがhello
を入力したため、この問題が発生した理由は、あなたのコードはchar、charなどで読み込まれます。 cout << "You may only type y or n.";
その後、あなたは残りの部分をignoreことができ、これを回避するためにcout << "Make a decision? (y/n) " << endl;
でループを再起動します。それは'y'
または'n'
だ場合、それがチェックし、それぞれの時間は、それはあなたのコードが行うように指示何を各charの'h'
、'e'
、'l'
など'y'
または'n'
が入力されていない場合、入力の
その他の見所:
- あなたはそれだあなたのコードから
-
y
または
n
が
- 入力されたときに、あなたのループを終了することをあなたが同様に大文字
Y
またはN
を確認する必要があることを確認する必要がありますuserAnswer
とUserAnswer
とは何ですか? userAnswerがstringの場合は、おそらくgetlineを使用してください。
- あなたは他の人があなたの
userAnswer
がchar you could do it this wayであると仮定すると、いくつかの擬似コードに
を実行しないことを、最小限のコード例を提供する必要があります
#include <iostream>
#include <limits>
using namespace std;
int main()
{
char userAnswer;
while (1 /*user is not closing the program*/)
{
cout << "Make a decision? (y/n) " << endl;
cin >> userAnswer;
cout << "entered: '" << userAnswer << "'\n";
userAnswer = tolower(userAnswer);
if (userAnswer == 'y' || userAnswer == 'n')
break;
cout << "You may only type 'y' or 'n'.\n";
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
'while'ループを使用します。 – wkl
'userAnswer'はどこから来たのですか? –
@wklそのコードはwhileループの中にあります –