我有一类想要作为成员的输出流,例如:
class GameBase {
protected:
ofstream m_OutputWriter;
...
}
此类中有一个使用字符串参数并打开m_OutputWriter指向该文件的方法,因此可以使用标准<
但是,我希望默认情况下使流指向cout,这样,如果未指定输出路径,则输出将进入控制台输出而不是文件,并且通过调用类将其完全透明,谁会用
m_OutputWriter << data << endl;
将数据输出到预定目的地。但是,我在这里尝试了其他两个示例,但这些示例似乎都不适合我要尝试的操作。
我在这里想念什么?
最佳答案
除了将std::ofstream
作为成员之外,我还将使用返回std::ostream&
的函数。
例如:
class GameBase {
std::ofstream m_OutputWriter;
protected:
std::ostream& getOutputWriter() {
if (m_OutputWriter)
return m_OutputWriter;
else
return std::cout;
}
...
}
一个功能齐全的示例:
#include <iostream>
#include <ostream>
std::ostream& get() {
return std::cout;
}
int main() {
get() << "Hello world!\n";
}
关于c++ - 如何更改C++输出流以引用cout?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7129037/