Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ fstream和ofstream操作符<&书信电报;差异_C++ - Fatal编程技术网

C++ fstream和ofstream操作符<&书信电报;差异

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

我想重载操作符AFAIK,
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&);