マニュアルページ stdiobuf.3
名前
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 ライブラリ」