std::basic_stringbuf<CharT,Traits,Allocator>::setbuf
来自 cppreference.com
< 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
可用于以可移植的方式实现用户提供的 char 数组上的 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 (on GNU g++/libstdc++ and SunPro C++/roguewave) <nothing> (on MS Visual Studio 2010, SunPro C++/stlport4, CLang++/libc++)
[编辑] 另请参见
调用 setbuf() ( std::basic_streambuf<CharT,Traits> 的公有成员函数) |