C++ fstream和ofstream操作符<&书信电报;差异
我想重载操作符AFAIK,C++ fstream和ofstream操作符<&书信电报;差异,c++,C++,我想重载操作符AFAIK,ofstream(“file.txt”)与fstream(“file.txt”,ios::out)相同 如果您还想读取同一文件,请使用fstream。如果仅追加,请使用流的。在任何一种情况下,如果您不想覆盖现有数据,请在打开时使用ios::app标志。您应该为ostream重载运算符,然后您可以自然地将其用于派生自ofstream、fstream(继承自iostream,继承自istream和ostream)的任何类的实例,ostringstream和stringstr
ofstream(“file.txt”)
与fstream(“file.txt”,ios::out)
相同 如果您还想读取同一文件,请使用fstream
。如果仅追加,请使用流的
。在任何一种情况下,如果您不想覆盖现有数据,请在打开时使用ios::app
标志。您应该为ostream重载运算符,然后您可以自然地将其用于派生自ofstream、fstream(继承自iostream,继承自istream和ostream)的任何类的实例,ostringstream和stringstream(也继承iostream)
std::ostream&operator对于std::ostream
来说,重载更有意义。如果您的实现可以更加通用,那么为什么您的实现应该被限制为一种特殊类型的输出流呢?您还可以将序列化打印到std::cout
,这简化了调试
本文对iostreams的关系和继承的用法进行了很好的概述。此外,特定流的每个概览页面都会显示继承关系。+1来自我。今天早上,我差一点就提出了一个非常类似的问题。
std::ofstream& operator<<(std::ofstream& ofs, const MyData&);
std::fstream& operator<<(std::fstream& fs, const MyData&)
std::ostream& operator<<(std::ostream& os, const MyData&);