std::basic_ios<CharT,Traits>::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 而不清除其錯誤狀態
(受保護成員函數) [編輯]