そう、いくつかの類似の機能を学ぶための方法をビットcin.fail()関数を学習し、CINと入力の正当性をチェックするプログラムを書きたいときに。
CINオブジェクトデータメンバ記載のフロー状態を含んでいます。eofbit、badbitをとfailbit:ストリームの状態は、3つのフラグがあります。
操作は、ファイルCIN、eofbitセットの最後に到達したとき。
流れが壊れている、badbitをセット。例:ファイルアクセス不可を読み取ろうと、書かれた書き込み禁止のディスク、残りのスペースが不足し、書き込みなどがあります。
failbitが操作cinを1に設定された文字を読むことを期待することができませんでした。たとえば、整数変数に入力される、入力が1 failbitキャラクタに設定されています。I / O障害failbitが設定される場合があります。
3つのステータスビットは、すべての最高のための0の場合。
ここではいくつかのチェックであるか、フロー法のステータスを変更。
- EOF()
eofbit 1場合はtrueを返します。
使用可能なcin.eof()
ファイルを読むためにかどうかを判断します。
- 良い()
フローを使用することができる場合、すなわち、3つのステータスビットが0である、真を返します。
のみcin.good()
trueの場合、while(cin >> input)
それはtrueを返します。
- 悪い()
badbitを1場合はtrueを返します。
- 不合格()
failbitまたはbadbitを1を返すtrueの場合。だから、悪いと()、真の同じ状況を返すもtrueを返す不一致文字タイプを入力します。
入力を確認するために使用することができます正当なものです。
int a;
cin >> a;
if(cin.fail()) {
cout << "Input error" << endl;
}
注:入力が法的でない場合は自動的にリセットされていないfailbit、再入力してください。
- rdstate()
戻り状態を流れ。
- クリア(iostate S)
これは、ステータスビットは変更されません。ステータス・ビットをリセットすること(iostate S)クリアを使用する必要があります。このメソッドは、すべてのステータスビットがS 0がデフォルトであり、sに設定されます。つまり、すべてのステータスビットがクリアされている()は明らかです。