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 ,建議的初始配置大小。
第二個建構函式的行為與第一個,不過,前者會儲存 _Allocfunc 做為函式指標呼叫配置儲存區和 _Freefunc 做為函式的指標呼叫釋放該儲存區。
這些建構函式:
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);
也請行為與第一個,但是有一點例外,就是 _Getptr 所用的陣列物件保存受控制序列。 (因此,都不可以是 null 指標)。判斷元素 N 的 參數數目等於陣列中的如下所示:
如果 (_Count > 0),再按 N 是 count。
如果 (_Count ==0),再按 N 是 strlen(constchar (*)_Getptr )。
如果 (_Count < 0),再按 N 是 INT_MAX。
如果 _Putptr 為 null 指標,則函式會執行建置一個輸入緩衝區:
setg(_Getptr, _Getptr, _Getptr + N);
否則,它會透過實作建立輸入和輸出緩衝區:
setg(_Getptr, _Getptr, _Putptr);
setp(_Putptr, _Getptr + N);
在這個案例中, _Putptr 必須在間隔 [_Getptr、 _Getptr + N]。
最後,三個建構函式:
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