テキスト ストリームとバイナリ ストリーム

テキスト ストリームは、読むことができるように、テキスト指向の表示として書き込まれた 1 行または複数行のテキストで構成されます。 テキスト ストリームから読み取ると、プログラムは各行の末尾に改行を読み取ります。 テキスト ストリームに書き込むと、プログラムは改行を書き込んで行の末尾を通知します。 ファイル内のテキストを表現するためのターゲット環境間で異なる規則を一致させるために、ライブラリ関数が、プログラムとテキスト ストリームの間で送信される文字の表現と数を変更することがあります。

テキスト ストリーム内の位置決めには、制限があります。 現在のファイル位置インジケーターは、呼び出 fgetpos しまたは ftell. この方法で取得した位置、またはストリームの先頭または末尾にテキスト ストリームを配置するには、呼び出し fsetpos または fseek. その他の配置の変更はサポートされていません。

移植性を最大化するために、プログラムで以下を記述しないでください。

  • 空のファイル。
  • 行の末尾のスペース文字。
  • 部分的な行 (ファイルの末尾にある改行を省略)。
  • 印刷可能な文字、改行、および水平タブ以外の文字。

これらの規則に従うと、テキスト ストリームから読み取った文字のシーケンスは、バイトまたはマルチバイト文字のどちらとして書き込んだ文字のシーケンスと一致します。 そうしないと、作成したファイルを閉じるときにファイルが空の場合、ライブラリ関数によって該当ファイルが削除されることがあります。 または、ファイルに書き込む文字を変更または削除できます。

バイナリ ストリームは、1 バイトまたは複数バイトの任意の情報で構成されます。 (バイト指向の) バイナリ ストリームに任意のオブジェクトに格納されている値を書き込み、書き込んだ際にオブジェクトに格納された内容を正確に読み取ることができます。 ライブラリ関数では、プログラムとバイナリ ストリームの間で送信するバイトは変更されません。 ただし、バイナリ ストリームで書き込むファイルに任意の数の NULL バイトが追加されることがあります。 プログラムは、バイナリ ストリームの末尾でこれらの余分な NULL バイトを処理する必要があります。

ストリームの末尾からの相対位置を除く、バイナリ ストリーム内の位置決めが適切に定義されます。 現在のファイル位置インジケーターは、テキスト ストリームの場合と同じ方法で、取得および変更できます。 ストリームの先頭から使用される ftell オフセットと fseek カウント バイト数 (バイト 0) により、これらのオフセットに対する整数演算によって予測可能な結果が得られます。

バイト ストリームはバイトのシーケンスとしてファイルを扱います。 プログラム内では、ストリームは、前述の差異がある可能性を除き、同一のバイトのシーケンスのように見えます。

関連項目

ファイルとストリーム