著者:Ma Zhifeng
リンク:https://zhuanlan.zhihu.com/p/24100020
出典:
著者がほぼ著作権を所有していることを知ってい ます。商用の再版については、著者に連絡して許可を得てください。非商用の再版については、出典を示してください。
リンク: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オブジェクトが仮パラメーターまたは戻り値の型として使用される場合、通常、非定数参照型が使用されます。理由は次のとおりです。
- IOオブジェクトのコピーは許可されていません
- 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";
文字列はすぐに印刷される場合もあれば、バッファに保存されてから印刷される場合もあります。
次の場合、バッファは強制的に更新されます
- プログラムの終了
- バッファがいっぱいです
- endlまたは他のマニピュレータ
- os << unitbuf、設定後のストリームはバッファリングされなくなり、直接出力されます
- 関連するフロー
- endlは改行文字を挿入し、バッファをフラッシュします
- ヌル文字を挿入してバッファをフラッシュします
- フラッシュフラッシュバッファ
標準ライブラリのCinとcoutはリンクされています。cinを使用すると、coutバッファがフラッシュされます。
tie関数を使用して関連付けを設定できます