C ++ ostream和ofstream转换

时间:2013-03-18 20:51:13

标签: c++ ofstream

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

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

ostream& ClassObject::output(ostream& os) const
{
    os << "Details";
    return os;
}

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

2 个答案:

答案 0 :(得分:10)

是的,你可以。这就是名为subtype polymorphism的OO概念中的重点。由于ofstream派生自ostream,因此ofstream的每个实例同时也是ostream的实例(概念上)。因此,您可以在任何需要ostream的实例的地方使用它。

答案 1 :(得分:0)

ofstream from ostream so

只需在 main.cpp

中添加一些代码
#include "ClassObject"
#include <fstream>
#include <iostream>

using namespace std;

int main()
{
     ClassObject ob;
     cout << ob; // print info to console window

     // save info to .txt file
     ofstream fileout;
     fileout.open("filename.txt", ios::app);
     fileout << ob;
     fileout.close();

     return 0;
}