マニュアルページ strstream.3




名前

     strstream - 文字配列を用いた入出力のためのストリームクラス


形式

     #include <strstream.h>
     class ios {
     public:
          enum open_mode  { in, out, ate, app, trunc, nocreate, noreplace };
          // 残りの部分については ios(3C++) を参照 ...
     };
     #include <strstream.h> // <iostream.h> を取り込む
     class  strstreambuf : public streambuf {
          // strstreambuf(3C++) を参照 ...
     };
     class strstreambase : virtual public ios {
          // Xstream クラスの定義 ...
     };
     class istrstream : public strstreambase, public istream {
     public:
          istrstream(char* ptr);
          istrstream(char* ptr, int len);
          strstreambuf* rdbuf();
     };
     class ostrstream : public strstreambase, public ostream {
     public:
          ostrstream(char* ptr, int len, int omode=ios::out);
          ostrstream();
          strstreambuf* rdbuf();
          int  pcount();
          char*     str();
     };
     class strstream : public strstreambase, public iostream {
     public:
          strstream();
          strstream(char* ptr, int len, int omode);
          strstreambuf* rdbuf();
          char*     str();
     };


機能説明

     クラス istrstream、ostrstream、strstream は、メモリー内の 文
     字 配 列 を用いた入出力操作のためにクラス istream、ostream、
     iostream をそれぞれ特殊化したものです。すなわち、対 応 す る
     streambuf は strstreambuf です。

     補足クラス strstreambase は、主に共通の関数を提供します。 詳
     細については省略します。

  istrstream のメンバー関数
     istrstream(ptr)
          ptr が NULL で終わる文字配列を指していると想定しま す。
          この文字配列は、入力元として機能します。NULL は入力の一
          部にはなりません。この配列の範囲内で、 seekg() を用いた
          シークを行うことができます。

     istrstream(ptr, len)
          ptr が長さ len の文字配列を指していると想定します。この
          文 字 配 列は、入力元として機能します。この配列の範囲内
          で、 seekg() を用いたシークを行うことができます。

     strstreambuf* ssbp = iss.rdbuf()
          iss に対応する strstreambuf を指すポインタを返しま す。
          こ の 関数は、戻り値の型が strstreambuf* であることを除
          き、基底クラス版と同じ働きをします。

  ostrstream のメンバー関数
     ostrstream()
          動的 (拡張可能) な文字配列を使用する空の出力ストリー ム
          を 作成します ( ssbuf(3C++) 参照)。配列の現在の境界内で
          シークを行うことができます。おそらく、このストリーム は
          後に str() (下記参照) を介して char* に変換されます。

     ostrstream(ptr, len, mode)
          ptr から始まる len 文字の静的な (拡張できない) 文字配列
          を使用する出力ストリームを作成します。 mode の ios::ate
          ビットまたは ios::app ビットがセットされている 場 合  (
          ios(3C++)  参照)、配列は ptr から始まり NULL で終わる文
          字列と想定されます。文字は NULL 文字から順に格納さ れ、
          格 納 される文字数が len 文字を超えることはありません。
          mode でこれらのビットがセットされていない場合、配列には
          データが含まれていないと想定され、文字は ptr の位置から
          格納されます。この配列の範囲内で、シークを行うことが で
          きます。

     strstreambuf* ssbp = oss.rdbuf()
          oss に対応する strstreambuf を指すポインタを返しま す。
          これは、戻り値の型が strstreambuf* であることを除き、基
          底クラス版と同じ働きをします。

     int n = oss.pcount()
          配列内に格納されている文字数を返します。この関 数 は 特
          に、配列にバイナリデータが含まれていたり、NULL で終わっ
          ていない場合に利用します。

     char* ptr = oss.str()
          対応する配列の開始点を指すポインタを返し、ストリーム を
          フ リーズ ( strstreambuf(3C++) 参照) します。配列が動的
          に割り当てられている場合は、その時点で自動的に削除さ れ
          たり、NULL で終了するのではなく、拡張できなくなります (
          strstreambuf の freeze() を参照)。 str() が呼び出される
          ま では、動的に割り当てられている配列は対応するストリー
          ム・バッファが破棄されると自動的に解放されます。呼び 出
          し 以後、配列とそれをいつ解放するかはユーザーが制御しな
          ければなりません。

  strstream のメンバー関数
     strstream()
          動的な (拡張可能な) 文字配列を使用する双方向の空のス ト
          リー ムを作成します ( ssbuf(3C++) 参照)。この配列の現在
          の境界内で、シークを行うことができます。

     strstream(ptr, len, mode)
          ptr から始まる len 文字の静的な (拡張できない) 文字配列
          を 用 い た 双 方 向 のストリームを作成します。 mode の
          ios::ate ビットまたは ios::app ビットがセットされている
          と ( ios(3C++) 参照)、配列は ptr で始まり NULL で終わる
          文字列を含んでいると想定されます。文字は NULL 文字か ら
          順に格納され、格納される文字数が len 文字を超えることは
          ありません。 mode でこれらのビットがセットされていな い
          場 合、配列にはデータが含まれていないと想定され、文字は
          ptr の位置から格納されます。この配列の範囲内で、シー ク
          を行うことができます。

     strstreambuf* ssbp = ss.rdbuf()
          ss に対応する strstreambuf を指すポインタを返します。こ
          の関数は、戻り値の型が strstreambuf* であることを除き、
          基底クラス版と同じ働きをします。

     char* ptr = ss.str()
          対応する配列の開始点を指すポインタを返し、ストリーム を
          フ リーズ ( strstreambuf(3C++) 参照) します。配列が動的
          に割り当てられている場合は、配列はその時点で自動的に 削
          除されたり、NULL で終了するのではなく、拡張できなくなり
          ます ( strstreambuf の freeze() を参照)。 str() が呼 び
          出 されるまでは、動的に割り当てられている配列は対応する
          ストリーム・バッファが破棄されると自動的に解放 さ れ ま
          す。 呼び出し以後、配列とそれをいつ解放するかはユーザー
          が制御しなければなりません。


関連項目

     ios.intro(3C++)、 ios(3C++)、 istream(3C++)、
     ostream(3C++)、 sbufpub(3C++)、 ssbuf(3C++)

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

          2 章「iostream ライブラリ」