如何将 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());
我正在处理一些使用 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());