Namespaces
Variants

std::basic_ios<CharT,Traits>:: rdbuf

From cppreference.net
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()); // 将 std::cout 的内部缓冲区替换为
                                    // 'local' 对象的缓冲区
    // 现在 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 而不清除其错误状态
(受保护成员函数)