## 9.4 バイナリモードとテキストモード

テキストファイルの表現方法は、オペレーティングシステムによって異なります。たとえば、UNIX 環境における行末は、改行文字 `'\n'` で表します。また、PC ベースのシステムでは、行末は、キャリッジリターン `'\r'` と改行 `'\n'` で表します。この 2 種類のオペレーティングシステムでは、ファイルの末尾も同様に異なります。他のオペレーティングシステムでもそれぞれに特色があります。

オペレーティングシステム間のプログラムの移植を促進するために、入出力時に自動変換をすることができるようになっています。たとえば、キャリッジリターンシーケンスや改行シーケンスは、`'\n'` の 1 文字に変換することができ、`'\n'` は出力時に `"\r\n"` に展開することができます。バイナリモードに対して、この変換モードをテキストモードといいます。バイナリモードでは、このような変換は行われません。

モードフラグ `ios_base::binary` を設定すると、ファイルがバイナリモードで開かれます。つまり、`"\r\n"` を `'\n'` に変換するといった、前述の自動変換機能が無効になります。 13

バイナリファイルを処理する場合は、`binary` モードフラグを設定してください。これにより、暗黙のシステム固有の変換が実行されるのを防ぎます。

バイナリオープンモードのはたらきについては、誤解しやすいので注意してください。バイナリモードでは、挿入子や抽出子は挿入されません。したがって、挿入子や抽出子による書式設定も行われません。バイナリ入力とバイナリ出力を実行するには、`basic_istream <charT> ::read()` と `basic_ostream <charT> ::write()` だけを実行します。

Copyright (c) 1998, Rogue Wave Software, Inc.
このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。

OEM リリース, 1998 年 6 月