Oracle Solaris Studio 12.4 Man Pages

印刷ビューの終了

更新: January 2015
 
 

strstream(3CC4)

名前

strstream - 文字配列を使用した I/O のためのストリームクラス

形式

 
#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();
};

説明

クラス istrstreamostrstream、および strstream は、メモリー内の文字配列を使用した I/O のためにクラス istreamostream、および iostream をそれぞれ特殊化したものです。つまり、関連付けられた streambufstrstreambuf です。

補助クラス strstreambase は実装の詳細であり、主に共通の関数のセットを提供します。それについては詳しく説明しません。

istrstream メンバー

istrstream(ptr)

ptr は、入力元として使われる NULL で終わる文字配列を指しているものとします。NULL は入力の一部にはなりません。配列の範囲内で、seekg() を使用したシークが許可されます。

istrstream(ptr, len)

ptr は、入力元として使われる、長さ len の文字の配列を指しているものとします。配列の範囲内で、seekg() を使用したシークが許可されます。

strstreambuf* ssbp = iss.rdbuf()

iss に関連付けられた strstreambuf へのポインタを返します。これはこの関数の基底クラスバージョンと同じですが、戻り型が具体的に strstreambuf* になります。

ostrstream メンバー

ostrstream()

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

ostrstream(ptr, len, mode)

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

strstreambuf* ssbp = oss.rdbuf()

oss に関連付けられた strstreambuf へのポインタを返します。これはこの関数の基底クラスバージョンと同じですが、戻り型が具体的に strstreambuf* になります。

int n = oss.pcount()

配列に格納された文字数を返します。これは特に、配列にバイナリデータが含まれているか、NULL で終わっていない場合に役立ちます。

char* ptr = oss.str()

基となる配列の先頭へのポインタを返し、ストリームをフリーズします。配列が動的に割り当てられている場合、自動的に削除されたり、NULL で終了したりせず、拡張できなくなります (strstreambuffreeze() を参照)。str() が呼び出されるまでは、動的に割り当てられている配列は、streambuf が破棄されると自動的に解放されます。その後、配列とそれをいつ解放するかはユーザーに責任があります。

strstream メンバー

strstream()

動的 (拡張可能) な文字の配列を使用する空の双方向ストリームを作成します (ssbuf(3CC4) を参照)。配列の現在の境界内で、シークが許可されます。

strstream(ptr, len, mode)

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

strstreambuf* ssbp = ss.rdbuf()

ss に関連付けられた strstreambuf へのポインタを返します。これはこの関数の基底クラスバージョンと同じですが、戻り型が具体的に strstreambuf* になります。

char* ptr = ss.str()

基となる配列の先頭へのポインタを返し、ストリームをフリーズします。配列が動的に割り当てられている場合、自動的に削除されたり、NULL で終了したりせず、拡張できなくなります (strstreambuffreeze() を参照)。str() が呼び出されるまでは、動的に割り当てられている配列は、streambuf が破棄されると自動的に解放されます。その後、配列とそれをいつ解放するかはユーザーに責任があります。

関連項目

ios (3CC4) , ios.intro (3CC4) , istream (3CC4) , ostream (3CC4) , sbufpub (3CC4) , ssbuf (3CC4)

C++ ライブラリリファレンス』第 3 章「従来型の iostream ライブラリ」