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((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、 _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