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()
andの固有の使用法cin.ignore()
とステータスを誤解しているように感じます。cin
を削除するcin.ignore()
と、ループは無限になります。どうしてこれなの?これをエレガントに機能するループにするにはどうすればよいですか? ありがとうございました。