std::strstreambuf::strstreambuf
提供: cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| (1) | ||
explicit strstreambuf( std::streamsize alsize = 0 ); |
(C++11未満) | |
strstreambuf() : strstreambuf(0) {} explicit strstreambuf( std::streamsize alsize ); |
(C++11以上) | |
strstreambuf( void* (*palloc)(std::size_t), void (*pfree)(void*) ); |
(2) | |
strstreambuf( char* gnext, std::streamsize n, char* pbeg = 0 ); |
(3) | |
strstreambuf( signed char* gnext, std::streamsize n, signed char* pbeg = 0 ); |
(4) | |
strstreambuf( unsigned char* gnext, std::streamsize n, unsigned char* pbeg = 0 ); |
(5) | |
strstreambuf( const char* gnext, std::streamsize n ); |
(6) | |
strstreambuf( const signed char* gnext, std::streamsize n); |
(7) | |
strstreambuf( const unsigned char* gnext, std::streamsize n ); |
(8) | |
1)
std::strstreambuf オブジェクトを構築します。 std::streambuf のデフォルトコンストラクタを呼ぶことによって基底クラスを初期化し、バッファの状態を「動的」(バッファは必要に応じて確保される) に初期化し、確保されたサイズを提供された alsize に初期化し、確保関数および解放関数をヌル (new[] および delete[] を使用する) に初期化します。2)
std::strstreambuf オブジェクトを構築します。 std::streambuf のデフォルトコンストラクタを呼ぶことによって基底クラスを初期化し、バッファの状態を「動的」(バッファは必要に応じて確保される) に初期化し、確保されたサイズを未規定の値に初期化し、確保関数を palloc に、解放関数を pfree に初期化します。3-5) 以下のステップで
std::strstreambuf オブジェクトを構築します。a) std::streambuf のデフォルトコンストラクタを呼ぶことによって基底クラスを初期化します。
b) バッファの状態を「定数」(バッファはユーザ提供の固定サイズのバッファ) に初期化します。
c) ユーザ提供の配列の要素数を以下のように決定します。
n がゼロより大きい場合は、 n が使用されます。 n がゼロの場合は、バッファのサイズを決定するために std::strlen(gnext) が実行されます。 n が負の場合は、 INT_MAX が使用されます。d) std::basic_streambuf のポインタを以下のように設定します。
pbeg がヌルポインタの場合は、 setg(gnext, gnext, gnext + N) を呼びます。 pbeg がヌルポインタでない場合は、 setg(gnext, gnext, pbeg) および setp(pbeg, pbeg+N) 実行します。 ただし N は先程決定された配列の要素数です。6-8)
strstreambuf((char*)gnext, n) と同じですが、バッファの状態のビットマスクの「定数」ビット (このバッファへの出力はできない) がセットされます。引数
| alsize | - | 動的に確保されるバッファの初期サイズ |
| palloc | - | ユーザ提供の確保関数へのポインタ |
| pfree | - | ユーザ提供の解放関数へのポインタ |
| gnext | - | ユーザ提供の配列内の get 領域の先頭へのポインタ |
| pbeg | - | ユーザ提供の配列内の put 領域の先頭へのポインタ |
| n | - | ユーザ提供の配列内の get 領域 (pbeg がヌルの場合) または put 領域 (pbeg がヌルでない場合) のバイト数 |
ノート
これらのコンストラクタは一般的には std::strstream のコンストラクタによって呼ばれます。
欠陥報告
以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。
| DR | 適用先 | 発行時の動作 | 正しい動作 |
|---|---|---|---|
| P0935R0 | C++11 | default constructor was explicit | made implicit |
例
Run this code
#include <strstream>
#include <iostream>
int main()
{
std::strstreambuf dyn; // dynamic
std::strstream dyn_s; // equivalent stream
dyn_s << 1.23 << std::ends;
std::cout << dyn_s.str() << '\n';
dyn_s.freeze(false);
char buf[10];
std::strstreambuf user(buf, 10, buf); // user-provided output buffer
std::ostrstream user_s(buf, 10); // equivalent stream
user_s << 1.23 << std::ends;
std::cout << buf << '\n';
std::strstreambuf lit("1 2 3", 5); // constant
std::istrstream lit_s("1 2 3"); // equivalent stream
int i, j, k;
lit_s >> i >> j >> k;
std::cout << i << ' ' << j << ' ' << k << '\n';
}
出力:
1.23
1.23
1 2 3
関連項目
| strstream を構築し、オプションでバッファを確保します ( std::strstreamのパブリックメンバ関数)
|