std::basic_stringbuf<CharT,Traits,Allocator>::setbuf
< cpp | io | basic stringbuf
protected: virtual std::basic_streambuf<CharT, Traits>* setbuf( char_type* s, std::streamsize n ) |
||
若 s
为空指针且 n
为零,则此函数无效果。
否则,效果是实现定义的:一些实现不做任何事,而一些实现清空当前用作缓冲区的 std::string 成员,并开始以用户提供的大小为 n
,首元素为 s
所指向的字符数组,为输入/输出字符序列的缓冲区。
此函数为受保护虚,仅可通过 pubsetbuf()
或导出自 std::basic_stringbuf
的用户定义类的成员函数调用它。
参数
s | - | 指向用户提供缓冲区首个 CharT 的指针或空指针 |
n | - | 用户提供缓冲区中的 CharT 元素数或零 |
返回值
this 。
注意
弃用的流缓冲 std::strstreambuf 或 boost.IOStreams 设备 boost::basic_array
可用于以可移植方式实现用户提供的字符数组上的 I/O 缓冲。
示例
测试 stringstream 的 setbuf 功能
运行此代码
#include <iostream> #include <sstream> int main() { std::ostringstream ss; char c[1024] = {}; ss.rdbuf()->pubsetbuf(c, 1024); ss << 3.14 << '\n'; std::cout << c << '\n'; }
输出:
3.14 ( GNU g++/libstdc++ 和 SunPro C++/roguewave 上) <无> (在 MS Visual Studio 2010 、 SunPro C++/stlport4 、 CLang++/libc++ 上)
参阅
调用 setbuf() ( std::basic_streambuf<CharT,Traits> 的公开成员函数) |