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