C++の新機能。エラー処理中に正しくループする問題がある。私はユーザーの入力が整数で、正であるかどうかをチェックしようとしています。C++整数をチェックしています。
do{
cout << "Please enter an integer.";
cin >> n;
if (cin.good())
{
if (n < 0) {cout << "Negative.";}
else {cout << "Positive.";}
}
else
{
cout << "Not an integer.";
cin.clear();
cin.ignore();
}
}while (!cin.good() || n < 0);
cout << "\ndone.";
非整数を入力すると、ループが壊れます。 cin.clear()
とcin.ignore()
の固有の使用法と、このループ中にcin
の状態を誤解しているような気がします。 cin.ignore()
を削除すると、ループは無限になります。どうしてこれなの?これをエレガントに機能するループにするために私は何ができますか?ありがとうございました。
デバッガを使用してください。 –