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> 的公开成员函数)