[解決済み】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
.
関連
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] スマートポインターとは何ですか?
-
[解決済み] C++でintをstringに変換する最も簡単な方法
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] 仮想デストラクタはいつ使うのか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない