「C ++入門書」リーディングノート-第01章IOクラス

著者:Ma Zhifeng
リンク:https://zhuanlan.zhihu.com/p/24100020
出典:
著者がほぼ著作権を所有していることを知ってい ます。商用の再版については、著者に連絡して許可を得てください。非商用の再版については、出典を示してください。

ステートメント:

  • 記事の内容は「C ++ Primer Chinese Edition(5th Edition)」から収集・編集されたものであり、著作権は原本に帰属します。
  • オリジナルの本はより詳細で素晴らしい解釈を持っています、学習のために本物の本を購入してください。
  • この記事は学習とコミュニケーションのみを目的としており、いかなる形式の転載も禁止されています

テキスト

  • デバイスIO
    • iostreamヘッダーファイル
    • fstreamヘッダーファイル
  • メモリIO
    • sstreamヘッダーファイル

iostreamヘッダーファイル

  • istream、wistreamはストリームから読み取られます
  • ostream、wostreamはストリームに書き込みます
  • iostream、wiostreamの読み取りと書き込み

他の2つは同様の構造を持ち、3つの間に継承関係があります

IOオブジェクトが仮パラメーターまたは戻り値の型として使用される場合、通常、非定数参照型が使用されます。理由は次のとおりです。

  1. IOオブジェクトのコピーは許可されていません
  2. IOオブジェクトの読み取りと書き込みはその状態を変更するため、constにすることはできません

ストリームの状態

  • タイプ
  • 4つのデータメンバー
  • 4つのフロー状態関数
  • 4ビット状態関数

タイプ

strm :: iostateは、ストリームの状態を表すために使用されるタイプであり、ビット演算をサポートします

4つのフロー状態関数

  • s.rdstate()はストリームの現在の状態を返し、タイプはiostateです。
  • s.setstate(flags)はストリームの状態を設定し、フラグのタイプはiostateです
  • s.clear(flags)は、指定された場所の状態をリセットします。フラグのタイプはiostateです。
  • s.clear()すべてリセット

4つのデータメンバー

iostateの1つである4つの異なるフロー状態を表します

  • strm :: badbitは、ストリームのクラッシュを意味します
  • strm :: failbitは、IO操作が失敗したことを示します
  • strm :: eofbitは、ファイルの終わりに到達することを意味します
  • strm :: goodbitは、ストリームにエラーがないことを示します

4ビット状態関数

対応するビットのステータスを取得します

  • s.eof()
  • s.fail()
  • s.bad()
  • s.good()

最初の3つについては、対応するビットが設定されている場合はtrueを返します。good
()の場合、ストリームが有効な状態の場合はtrueを返します。

cin.clear( cin.rdstate() & ~cin.failbit & ~cin.badbit );

フェイルビットとバッドビットをリセットします。他のビットは変更されません。

while( cin>>num ){}

whileループは、>>式によって返されるストリームのステータスをチェックします。ストリームが有効なままの場合、条件はtrueです。

int num;  
cin >> num;

整数を読み取ることを期待します。「Boo」を入力すると、文字Bが検出されたときにストリームがエラー状態になり、後続の入力は無効になります。

出力バッファリングを管理する

各出力ストリームは、プログラムによって読み書きされたデータを保存するためのバッファー管理します

os<<"xxx";

文字列はすぐに印刷される場合もあれば、バッファに保存されてから印刷される場合もあります。

次の場合、バッファは強制的に更新されます

  1. プログラムの終了
  2. バッファがいっぱいです
  3. endlまたは他のマニピュレータ
  4. os << unitbuf、設定後のストリームはバッファリングされなくなり、直接出力されます
  5. 関連するフロー
  • endlは改行文字を挿入し、バッファをフラッシュします
  • ヌル文字を挿入してバッファをフラッシュします
  • フラッシュフラッシュバッファ

標準ライブラリのCinとcoutはリンクされています。cinを使用すると、coutバッファがフラッシュされます。

tie関数を使用して関連付けを設定できます

おすすめ

転載: blog.csdn.net/qq_26751117/article/details/53442420