strstreambuf::strstreambuf
型 strstreambufオブジェクトを構築します。
explicit strstreambuf(
streamsize _Count = 0
);
strstreambuf(
void ( *_Allocfunc )( size_t ),
void ( *_Freefunc )( void * )
);
strstreambuf(
char *_Getptr,
streamsize _Count,
char *_Putptr = 0
);
strstreambuf(
signed char *_Getptr,
streamsize _Count,
signed char *_Putptr = 0
);
strstreambuf(
unsigned char *_Getptr,
streamsize _Count,
unsigned char *_Putptr = 0
);
strstreambuf(
const char *_Getptr,
streamsize _Count
);
strstreambuf(
const signed char *_Getptr,
streamsize _Count
);
strstreambuf(
const unsigned char *_Getptr,
streamsize _Count
);
パラメーター
_Allocfunc
バッファー メモリを割り当てるために使用される関数。_Count
_Getptrが指すバッファーの長さを決定します。_Getptr がコンストラクター引数 (最初のフォーム) 場合、バッファーで推奨される割り当てサイズ。_Freefunc
バッファー メモリを解放するために使用される関数。_Getptr
入力に使用するバッファー。_Putptr
出力に使用するバッファー。
解説
最初のコンストラクターは入力バッファー、出力バッファーと strstreambuf の割り当てを制御するすべてのポインターで null ポインターを格納します。これは、被制御シーケンスの変更ができ、拡張性にするために、格納済み strstreambuf モードを設定します。また、_Count をとして推奨される最初の割り当てサイズ受け取ります。
2 つ目のコンストラクターは、1 番目のため、そのメモリを解放するために関数呼び出しにはポインターとして格納と _Freefunc を割り当てるにただし、関数にポインターとして呼び出されるように _Allocfunc を格納します。
3 人のコンストラクター:
strstreambuf(char *_Getptr, streamsize count,
char *putptr = 0);
strstreambuf(signed char *_Getptr, streamsize count,
signed char *putptr = 0);
strstreambuf(unsigned char *_Getptr, streamsize count,
unsigned char *putptr = 0);
また、1 番目のようにします。ただし、_Getptr は、被制御シーケンスを格納するために使用される配列オブジェクトを示します。(したがって、これは null ポインターである必要があります)。配列の要素数の N は次のように決定されます:
(_Count > 0)、N がcountの場合は。
(場合_Count == 0)、N はstrlenです (**[const]**char (*) _Getptr )。
(_Count < 0)、N がINT_MAXの場合は。
_Putptr が null ポインターの場合、実行によって、入力バッファーを作成します:
setg(_Getptr, _Getptr, _Getptr + N);
それ以外の場合は、実装によって入出力バッファーの両方を設定します:
setg(_Getptr, _Getptr, _Putptr);
setp(_Putptr, _Getptr + N);
この場合、_Putptr 間隔は、_Getptr + N_Getptr[入力] に配置する必要があります。
最後に、二つのコンストラクター: 3
strstreambuf(const char *_Getptr, streamsize _Count);
strstreambuf(const signed char *_Getptr, streamsize _Count);
strstreambuf(const unsigned char *_Getptr, streamsize _Count);
はすべてと同様に動作します:
streambuf( (char *)_Getptr, _Count );
ただし、格納されているモードは、被制御シーケンスを変更でき、また、拡張できるようにします。
必要条件
ヘッダー: <strstream>
名前空間: std