void get_english_input() {
string input = " ";
stringstream my_string(input);
int ft;
double in;
while(true) {
cout << "Enter an integer value of feet." << endl;
getline(cin, input);
my_string << input;
if(my_string >> ft)
break;
cout << "Invalid input! Please try again." << endl;
}
cout << "you entered " << ft << " as the int value for feet." << endl;
/*while(true) {
cout << "Enter a double value of inches." << endl;
getline(cin, input);
my_string << input;
break;
cout << "Invalid input! Please try again." << endl;
}
cout << "we are done entering english input" << endl;
cout << "feet = " << ft << endl;
cout << "inches = " << in << endl;*/
}
このコードは、my_string の内容を ft に入れようとすることで、入力が整数かどうかをテストすることになっています。整数の代わりに文字を入力すると、「無効な入力です!再試行してください」というエラー メッセージが表示されます。起こるはずです。問題は、そのメッセージを一度取得した後、次の入力が有効であっても、その後のすべての入力に対してメッセージを取得することです。
std::cin.clear();を使用する必要があると誰かが提案しました。エラーフラグをクリアします。getline() の前に置いてみましたが、問題は変わりませんでした。私はこれを間違って使用していましたか?