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