1. ホーム
  2. c++

[解決済み】cin.fail()の正しい使用方法)

2022-01-29 19:35:47

質問

の正しい使い方を教えてください。 cin.fail(); ?

何かを入力するプログラムを作っています。 数字を入力するのか、文字を入力するのかがよくわかりません。 ユーザーが数字ではなく文字を入力すると、コンソールがおかしくなってしまいます。 どうすれば cin.fail() を使えば解決するのでしょうか?

それとも、もっと良い方法があるのでしょうか?

解決方法は?

cin.fail() は、最後のcinコマンドが失敗した場合はtrueを、そうでない場合はfalseを返します。

一例です。

int main() {
  int i, j = 0;

  while (1) {
    i++;
    cin >> j;
    if (cin.fail()) return 0;
    cout << "Integer " << i << ": " << j << endl;  
  }
}

ここで、input.txtというテキストファイルがあり、その中身は次のようなものだとします。

  30 40 50 60 70 -100 Fred 99 88 77 66

その上で、上記の短いプログラムを実行すると、次のような結果になります。

  Integer 1: 30
  Integer 2: 40
  Integer 3: 50
  Integer 4: 60
  Integer 5: 70
  Integer 6: -100

を読み込んだ後に終了するため、6番目の値以降は続行しません。 単語 なぜなら、それは整数ではないからです。 cin.fail() が返ってくる true .