C ++エラー処理の共通CIN

そう、いくつかの類似の機能を学ぶための方法をビット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に設定されます。つまり、すべてのステータスビットがクリアされている()は明らかです。

参照

「C ++プライマープラス」スティーヴンの話

C ++之cin.eof、cin.bad、cin.good、cin.fail、cin.clear

おすすめ

転載: www.cnblogs.com/wulitaotao/p/11816421.html
おすすめ