#include <strstream.h> class ios { public: enum open_mode { in, out, ate, app, trunc, nocreate, noreplace }; // 残りについては ios(3CC4) を参照... }; #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 mode=ios::out); ostrstream(); strstreambuf* rdbuf(); int pcount(); char* str(); }; class strstream : public strstreambase, public iostream { public: strstream(); strstream(char* ptr, int len, int mode); strstreambuf* rdbuf(); char* str(); };
クラス istrstream、ostrstream、および strstream は、メモリー内の文字配列を使用した I/O のためにクラス istream、ostream、および iostream をそれぞれ特殊化したものです。つまり、関連付けられた streambuf は strstreambuf です。
補助クラス strstreambase は実装の詳細であり、主に共通の関数のセットを提供します。それについては詳しく説明しません。
ptr は、入力元として使われる NULL で終わる文字配列を指しているものとします。NULL は入力の一部にはなりません。配列の範囲内で、seekg() を使用したシークが許可されます。
ptr は、入力元として使われる、長さ len の文字の配列を指しているものとします。配列の範囲内で、seekg() を使用したシークが許可されます。
iss に関連付けられた strstreambuf へのポインタを返します。これはこの関数の基底クラスバージョンと同じですが、戻り型が具体的に strstreambuf* になります。
動的 (拡張可能) な文字の配列を使用する空の出力ストリームを作成します (ssbuf(3CC4) を参照)。配列の現在の境界内で、シークが許可されます。おそらく、このストリームはあとで str() を介して char* に変換されます (下記参照)。
ptr から始まる len 文字の静的な (拡張できない) 配列を使用する出力ストリームを作成します。mode に ios::ate または ios::app ビットが設定されている場合 (ios(3CC4) 参照)、配列は ptr から始まり NULL で終わる文字列を格納するものと想定されます。文字は NULL 文字から格納され、len 文字を超えることはありません。mode にそれらのビットが設定されていない場合、配列にデータが含まれていないものと想定され、文字は ptr の位置から格納されます。配列の範囲内で、シークが許可されます。
oss に関連付けられた strstreambuf へのポインタを返します。これはこの関数の基底クラスバージョンと同じですが、戻り型が具体的に strstreambuf* になります。
配列に格納された文字数を返します。これは特に、配列にバイナリデータが含まれているか、NULL で終わっていない場合に役立ちます。
基となる配列の先頭へのポインタを返し、ストリームをフリーズします。配列が動的に割り当てられている場合、自動的に削除されたり、NULL で終了したりせず、拡張できなくなります (strstreambuf の freeze() を参照)。str() が呼び出されるまでは、動的に割り当てられている配列は、streambuf が破棄されると自動的に解放されます。その後、配列とそれをいつ解放するかはユーザーに責任があります。
動的 (拡張可能) な文字の配列を使用する空の双方向ストリームを作成します (ssbuf(3CC4) を参照)。配列の現在の境界内で、シークが許可されます。
ptr から始まる len 文字の静的な (拡張できない) 配列を使用する双方向ストリームを作成します。mode に ios::ate または ios::app ビットが設定されている場合 (ios(3CC4) 参照)、配列は ptr から始まり NULL で終わる文字列を格納するものと想定されます。文字は NULL 文字から格納され、len 文字を超えることはありません。mode にそれらのビットが設定されていない場合、配列にデータが含まれていないものと想定され、文字は ptr の位置から格納されます。配列の範囲内で、シークが許可されます。
ss に関連付けられた strstreambuf へのポインタを返します。これはこの関数の基底クラスバージョンと同じですが、戻り型が具体的に strstreambuf* になります。
基となる配列の先頭へのポインタを返し、ストリームをフリーズします。配列が動的に割り当てられている場合、自動的に削除されたり、NULL で終了したりせず、拡張できなくなります (strstreambuf の freeze() を参照)。str() が呼び出されるまでは、動的に割り当てられている配列は、streambuf が破棄されると自動的に解放されます。その後、配列とそれをいつ解放するかはユーザーに責任があります。
ios (3CC4) , ios.intro (3CC4) , istream (3CC4) , ostream (3CC4) , sbufpub (3CC4) , ssbuf (3CC4)
『C++ ライブラリリファレンス』第 3 章「従来型の iostream ライブラリ」