0

文字を押すと無限ループになるのはなぜですか? エラーチェック時にコードが無限ループに入らないようにするにはどうすればよいですか?

#include <iostream>
using namespace std;

int main()
{
    int number;
    cout << "Enter a number in the range 1-100: ";
    cin >> number;

    while (number > 1 || number < 100)
    {
        cout << "ERROR: Enter a value in the range 1-100: ";
        cin >> number;

    }
    return 0;
}
4

2 に答える 2

1

std::cin はタイプセーフであるため、文字が「int 番号」の有効な入力ではないことを認識しています。std::cin でエラー フラグが発生し、後続の操作はすべて失敗し、すぐに戻ります。

続行する前に、エラー状態を確認し、エラー フラグをクリアする必要があります。

既存の投稿を参照数字ではなく文字を入力すると無限ループになるのはなぜですか?

于 2016-09-30T21:59:26.737 に答える
0

どうもありがとう。結局これで行きました。

while (!(cin >> number)) 
{ 
   cout << "ERROR: Enter a value in the range 1-100: "; 

   //to clear input stream
   cin.clear();   

   //to discard previous input
   cin.ignore(1200, '\n'); 

   cin >> number; 
}
于 2016-10-04T00:50:51.553 に答える