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

时间:2015-08-06 20:57:34

标签: c++ c++11 stl cout ofstream

我正在使用一些使用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吗?

1 个答案:

答案 0 :(得分:8)

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

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