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