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

< 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

### 参阅

set_rdbuf | 替换 `rdbuf` 而不清除其错误状态 (受保护成员函数)