を返します。これはどのように機能するのですか(なぜ)?のC++は0
のC++は0
答えて
ないことが明確に記述し、幅広いていないとして、なぜ質問は/近い票を降り(コメントによると判断し、多くの人が答えを知っていない)ことを確認...とにかく
、コードのために:
int age;
cin >> age;
入力ストリームは任意の数字が含まれていなかった場合は、ストリームは失敗状態とage
に置かれているが0
に設定されています。入力ストリームの文字はそこに残ります。それらは、失敗状態がクリアされると、将来の読み出し動作によって読み出すことができる。
operator>>
の動作はsummarized on cppreferenceですが、標準の完全な説明はやや複雑です。
注:これはC++ 11で変更されました。ガベージ出力を報告しているコメント者は、C++ 11より前のモードでコンパイラを実行しているか、またはバグがあったものです。
非常に便利な答えです。 –
ヘルプ!このエラーの影響をどのように取り消しますか?私は 'cin.clear()'を実行しようとしましたが、何もしません。 'std :: cin >> rounds'は引き続き' rounds'を0に設定し続けます。 – chbchb55
@ chbchb55ストリームに非数値データがある場合それは正しい動作です。ストリームから数値以外のデータをクリアしたいのですか? (もしそうなら、[ここをクリック](http://stackoverflow.com/a/257182/1505939))。 –
入力がint
(あなたの場合)に変換できない場合、failbit
はstd::cin
に設定されます。これはstd::cin.fail()
を呼び出して取得できます。
std::cin >> age;
if (std::cin.fail()) {
std::cout << "data entered is not of int type";
}
また!std::cin
の代わりstd::cin.fail()
を使用することができます。
私は '0 'はガベージであり、' ''は失敗したときに引数を設定します。 – HolyBlackCat
@Holyblackcatゴミ。 –
これについてあなたは確信していますか? –
- 1. objective-c metadataOutputRectOfInterestForRect戻り値{{0、0}、{0、0}}
- 2. C/C++サイズが0
- 3. C#の意味-0?
- 4. c freeall malloc(0)
- 5. (char)0と '\ 0'の違いは何ですか? C内
- 6. C/C++のsprintfの書式-0
- 7. Cプログラムの時間測定は0
- 8. Cの "{0}"は何ですか?
- 9. C++ディレクティブwith void(0)
- 10. 文字列終了 - char c = 0 vs char c = '\ 0'
- 11. のC#常に0引数
- 12. c()関数のprint 0
- 13. C++のvector.begin()とvector [0]
- 14. は、リスト内のインデックス0に "0" を削除したいではなく、10,20,30 ..... C#
- 15. C#coclass - GetTypeInfoCountは0を返します
- 16. C言語でのptr = my_arrayとptr =&my_array [0] [0]の違いは何ですか?
- 17. C++の "some" == "some \ 0"とstrcmp( "some"、 "some \ 0")の違いは何ですか?
- 18. カラムa = 0の場合、カラムb = 0、カラムcを使用
- 19. C++スタイルと0からsize_t(0)への変換
- 20. C++ヘッダーの#define機能(X)( 'ABC \ 0' |( '0' +(X&0xFFで)))
- 21. C++ if(Array [x] .length> 0)
- 22. 明確な説明[C - 「0」]
- 23. Cカーネルモード/リング0 - フロート/ダブル値
- 24. C++ - リターン対リターン0 -1
- 25. リミット(|c|と<1)0(イザベル)
- 26. C#のToString( "MM/DD/YY")が0の
- 27. C#の例外の行番号(0)
- 28. C#コードの{0} \\ {1}の意味
- 29. のmysqldumpは(0)、「\ 0」または0x0の
- 30. C#whileループの範囲0 - 5
これから説明しているC++テキストブックでは、これについて詳しく説明していませんか? –
"他の文字列"ではありません。 42を入力すると、42が得られます。 – user2079303
これはなぜ機能するのでしょうか?文字列を入力していますが、intに読み込んでいます。タイプと一致しないので、入力を無視していくつかのデフォルト値(0)を返すのが最良の推測です。メモint年齢は任意の既定値に年齢を初期化しません。 –