std::basic_ios::rdbuf

来自cppreference.com
< cpp‎ | io‎ | basic ios
std::basic_streambuf<CharT, Traits>* rdbuf() const;
(1)
std::basic_streambuf<CharT, Traits>* rdbuf( std::basic_streambuf<CharT, Traits>* sb );
(2)

管理关联的流缓冲。

1) 返回关联的流缓冲。若无关联流缓冲,则返回空指针。
2) 设置关联流缓冲为 sb 。通过调用 clear() 清除错误状态。返回操作前的关联流缓冲。若无关联流缓冲,则返回空指针。

目录

[编辑] 参数

sb - 要关联的流缓冲

[编辑] 返回值

关联的流缓冲,或若无关联流缓冲则为空指针。

[编辑] 异常

(无)

[编辑] 示例

#include <iostream>
#include <sstream>
 
int main()
{
    std::ostringstream local;
    auto cout_buff = std::cout.rdbuf(); // 保存指向 std::cout 缓冲的指针
 
    std::cout.rdbuf(local.rdbuf()); // 以 'local' 对象的缓冲
        // 替换内部的 std::cout 缓冲
 
    // 现在 std::cout 以 'local' 缓冲工作
    // 你看不到此消息
    std::cout << "some message";
 
    // 回到旧缓冲
    std::cout.rdbuf(cout_buff);
 
    // 你将看到此消息
    std::cout << "back to default buffer\n";
 
    // 打印 'local' 内容
    std::cout << "local content: " << local.str() << "\n";
}

输出:

back to default buffer
local content: some message

[编辑] 参阅

替换 rdbuf 而不清除其错误状态
(受保护成员函数) [编辑]