STDIOBUF(3C++)

名前
stdiobuf - C 標準入出力用のバッファクラスとストリームクラス

形式

#include <stdiostream.h> // <iostream.h> と <stdio.h> を取り込む

class stdiobuf : public streambuf {
public:
	stdiobuf(FILE*);
	FILE*	stdiofile();
};

class stdiostream : public ios {
public:
	stdiostream(FILE*);
	stdiobuf* rdbuf();
};

機能説明

クラス stdiobuf は、文字の入力元または出力先である実際のファイルへの 中間的なオブジェクトとして C の標準入出力ファイル ( FILE ) を使用するように、 streambuf を特殊化したものです。 streambuf の基本操作については、 sbuf.prot(3C++) および sbuf.pub(3C++) の説明を参照してください。 入出力操作とシーク操作は、対応する FILE に対する変更に反映されます。 シーク関数は、たとえば fseek() として実装されます。

stdiostream は、C の標準入出力ファイルと C++ との間のインタフェースを 提供します。このクラスは、 stdiobuf をバッファに持っています。 これは、入出力ストリーム全体を実装したものではなく、 バッファクラスとクラス ios の機能しか持っていません。 C++ の入出力は、C の標準入出力関数の getc() と putc() を文字単位で呼び出すことによって行われます。 C と C++ が同期してアクセスすることはできないため、 通常のバッファリングは行われません。

これらのクラスのどちらかを使用するのは、 C の標準入出力ライブラリを用いたコードと、C++ の入出力ストリームを用いたコード を同じファイル上で使用することを可能にするためです。 新しいコードには、より効率的な filebuf と fstream を使用するようにしてください。

  stdiobuf 関数

stdiobuf(fp)
    fp が指す FILE 構造に接続 (アタッチ) された stdiobuf を作成します。

FILE* fp = siobuf.stdiofile()
    siobuf に対応する FILE 構造を指すポインタを返します。

  stdiostream 関数

stdiostream(fp)
    fp が指す FILE 構造にアタッチされた stdiostream を作成します。

stdiobuf* sbp = siostr.rdbuf()
    siostr に対応する stdiobuf を指すポインタを返します。 これは、戻り値の型が stdiobuf である点を除いて、 ios::rdbuf() と同じ働きをします。

関連項目

ios.intro(3C++)、 ios(3C++)、 sbufprot(3C++)、 sbufpub(3C++)、 stdio(3C)

『C++ ライブラリ・リファレンス』

3 章「iostream ライブラリ」