std::strstreambuf::setbuf
来自cppreference.com
< cpp | io | strstreambuf
protected: virtual streambuf<char>* setbuf(char* s, std::streamsize n); |
||
若 s
为空指针且 n
为零,则函数无效果。
否则,效果为实现定义:一些实现不做任何事,而一些实现解分配动态成员数组并使用用户提供的大小为 n
,首元素为 s
所指向的数组。
此函数为受保护虚,它仅可通过 pubsetbuf()
或从导出自 std::strstreambuf
的用户定义类调用。
参数
s | - | 指向用户提供缓冲区中首字节的指针 |
n | - | 用户提供缓冲区中的字节数 |
返回值
this
示例
检查是否在动态 strstream 上支持 setbuf() 的实现测试(输出以 Sun Studio 获得)
运行此代码
#include <strstream> #include <iostream> int main() { char a[100] = {}; std::strstream str; str.rdbuf()->pubsetbuf(a, sizeof a); str << "Test string" << std::ends; std::cout << "user-provided buffer holds '" << a << "'\n"; }
可能的输出:
user-provided buffer holds 'Test string'
参阅
调用 setbuf() ( std::basic_streambuf<CharT,Traits> 的公开成员函数) | |
[虚] |
若容许则以用户定义数组替换缓冲区 ( std::basic_streambuf<CharT,Traits> 的虚受保护成员函数) |
[虚] |
试图以数组替换受控字符序列 ( std::basic_stringbuf<CharT,Traits,Allocator> 的虚受保护成员函数) |
[虚] |
提供用户供应的缓冲区,或将此 filebuf 转变为无缓冲 ( std::basic_filebuf<CharT,Traits> 的虚受保护成员函数) |