使用 std::fstream
one 可以声明类型ifstream
和ofstream
. 唯一的区别是,fstream
我们需要提供in
, out
,app
作为其他两个可能并不总是需要的参数。
有没有什么特别的东西ifstream,ofstream
不能用fstream
或者只是编码方便来完成?
这有点像问我们为什么想要const
你无论如何都可以从变量中读取和写入。它允许编译时检查,这是减少错误的宝贵功能。它也更具自我记录性,因为在没有构造函数调用的情况下查看声明时,您可以看到它是输入、输出还是两者兼而有之:您提到的参数通常只能在可能不可用的实现文件中看到。此外,每种类型的流可能在他们需要的数据成员上存在一些差异 - 可能使用与您的实际需求相匹配的最小功能类可以节省内存、时间初始化或检查其他变量等。
如果有的话,fstream
那只是一种方便。特别是,您所拥有的基本上是:
namespace std {
class ifstream { /* ... */ };
class ofstream { /* ... */ };
class fstream : public ifstream, public ofstream { /* ... */ };
}
[显然跳过了很多不相关的细节]。
简而言之,fstream
提供了 a 的所有输入能力和 a 的所有输出ifstream
能力。没有and , an (至少在任何类似于其当前形式的情况下)根本不存在。ofstream
ifstream
ofstream
ifstream
ofstream
fstream
整个要点是通用的。如果你只需要读取一个文件,你可以把一个ifstream作为参数,然后任何支持读取的东西都可以传入,即使它是不可写的。反之亦然。