6

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()と、ループは無限になります。どうしてこれなの?これをエレガントに機能するループにするにはどうすればよいですか? ありがとうございました。

4

2 に答える 2