std::cout重定向
时间: 2023-06-23 12:50:11 浏览: 149
如果你想将 `std::cout` 的输出重定向到一个文件或者其他的输出流,你可以使用 `std::cout` 的成员函数 `rdbuf()` 来设置。具体地说,你可以将一个指向 `std::streambuf` 的指针传递给 `rdbuf()`,这个指针指向的是你希望将输出重定向到的流(比如文件流或者字符串流)的缓冲区。
下面是一个简单的例子,将 `std::cout` 的输出重定向到一个文件中:
```c++
#include <iostream>
#include <fstream>
int main() {
std::ofstream file("output.txt");
std::streambuf* old_cout_buf = std::cout.rdbuf(); // 保存原始的 std::cout 缓冲区
std::cout.rdbuf(file.rdbuf()); // 将输出重定向到文件流的缓冲区
std::cout << "Hello, world!" << std::endl; // 将会输出到文件中
std::cout.rdbuf(old_cout_buf); // 恢复原始的 std::cout 缓冲区
std::cout << "Hello, world!" << std::endl; // 将会输出到控制台
return 0;
}
```
在这个例子中,我们首先创建了一个名为 `output.txt` 的文件流,并将其传递给了 `std::cout.rdbuf()`。这样,所有输出都会被重定向到文件流中。然后,我们将 `std::cout` 的原始缓冲区保存在了一个指针中,以便在需要时恢复。最后,我们恢复了原始的缓冲区,并输出了另一条消息,这次输出将会被打印到控制台上。
阅读全文