如何将 std::ofstream 重定向到 std::cout?

How can I redirect a std::ofstream to std::cout?

我正在处理一些使用 std::ofstream* 类型的全局调试记录器的代码。我想将其重定向到 std::cout,因为我正在实时使用代码,而不是为它设计的批处理方法。

是否可以将它使用的全局 std::ofstream* 指针重定向到 std::cout?我知道 std::ofstream 继承自 std::ios,它允许使用 rdbuf() 方法更改流缓冲区,但不幸的是 std::ofstream 重新定义了 rdbuf() 方法,这使得以下代码无法编译:

gOsTrace = new std::ofstream();
gOsTrace->rdbuf(std::cout.rdbuf());

是否有另一种方法可以将 gOsTrace 对象重定向到指向 cout

具体 IOStream 流的 rdbuf() 方法 class 隐藏了 std::ios 中声明的方法。您将需要一个显式限定才能找到基础 class 重载:

gOsTrace->basic_ios<char>::rdbuf(std::cout.rdbuf());