#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 ライブラリ」