rdbuf()
是 C++ iostream 庫中的一個函數,它用于獲取或設置與流關聯的緩沖區
以下是一個使用 rdbuf()
進行輸入輸出重定向的示例:
#include<iostream>
#include <fstream>
#include <sstream>
int main() {
// 創建一個輸出文件流對象
std::ofstream out_file("output.txt");
// 將 cout 的緩沖區與 out_file 的緩沖區關聯起來
std::streambuf* old_cout_buf = std::cout.rdbuf();
std::cout.rdbuf(out_file.rdbuf());
// 現在所有發送到 cout 的輸出都會被重定向到 output.txt 文件
std::cout << "Hello, World!"<< std::endl;
// 恢復 cout 的原始緩沖區
std::cout.rdbuf(old_cout_buf);
// 從文件讀取內容并將其輸出到控制臺
std::ifstream in_file("output.txt");
std::stringstream ss;
ss << in_file.rdbuf();
std::cout << "Content of the file: "<< std::endl;
std::cout << ss.str()<< std::endl;
return 0;
}
在這個示例中,我們首先創建了一個輸出文件流對象 out_file
,然后將 std::cout
的緩沖區與 out_file
的緩沖區關聯起來。這樣,當我們向 std::cout
發送輸出時,實際上是將輸出寫入到 output.txt
文件中。接下來,我們恢復了 std::cout
的原始緩沖區,以便將輸出重定向回控制臺。最后,我們從文件讀取內容并將其輸出到控制臺。