fstream和ofstream operator<<区别

时间:2010-07-03 13:13:38

标签: c++

我想重载operator<<将对象序列化为文件(追加)。我应该使用哪个流? ofstreamfstream?有什么区别?

std::ofstream& operator<<(std::ofstream& ofs, const MyData&);
std::fstream& operator<<(std::fstream& fs, const MyData&)

由于 千斤顶

4 个答案:

答案 0 :(得分:15)

你应该为ostream重载运算符,然后你可以自然地使用它来源于任何类的实例 - ofstream,fstream(继承自iostream,继承自istream和ostream),ostringstream和stringstream(继承也是iostream)

std::ostream& operator<<(std::ostream& os, const MyData&);

答案 1 :(得分:1)

std::ostream重载更有意义。如果可以更一般地将实现限制为特殊类型的输出流,为什么?您还可以将序列化打印到std::cout,这简化了调试。

给出了关于iostream关系和继承用法的一个很好的概述here。此外,每个特定流的概述页面都显示了继承关系。

答案 2 :(得分:0)

AFAIK,ofstream("file.txt")fstream("file.txt", ios::out)相同。

答案 3 :(得分:0)

如果您还想阅读同一文件,请使用fstream。如果仅附加,请使用ofstream。在任何一种情况下,如果您不想覆盖现有数据,请在打开时使用ios::app标志。