C++ ostream和ofstream转换

Tom*_*Tom 7 c++ ofstream

我的代码有一个ostream由各种模块累积并最终显示到控制台的对象.我也想将这个ostream对象写入一个文件,但我是否必须使用一个ofstream对象重写所有代码,或者有一种方法可以将一个转换为另一个(可能通过stringstream?)

例如,我现有的许多功能都是这样的

ostream& ClassObject::output(ostream& os) const
{
    os << "Details";
    return os;
}
Run Code Online (Sandbox Code Playgroud)

我可以用ofstream对象作为参数调用此函数,并让该ofstream对象累积信息吗?

小智 12

是的你可以.这就是OO概念中称为子类型多态性的观点.由于ofstream派生自ostream,每个实例ofstream同时也是一个实例ostream(概念上).所以你可以在任何ostream预期的实例使用它.