为什么'ifstream'和'ofstream'被添加到"std",而'fstream'可以用于这两个目的?

iam*_*ind 9 c++ fstream ifstream ofstream

利用 std::fstream一个可以声明两种类型的对象ifstreamofstream.唯一不同的是,随着fstream我们需要提供in,out,app作为一个参数,它可能并不总是需要另外两个.

有什么特别的东西ifstream,ofstream无法实现fstream或只是编码方便吗?

Ton*_*roy 16

这有点像问你为什么我们想要什么const,无论如何你可以从变量读写.它允许编译时检查,这是减少错误的宝贵功能.它也更加自我记录,因为在没有构造函数调用的情况下查看声明时,您可以看到它是输入,输出还是两者:您提到的参数通常只能在实现文件中看到,而这可能并不适用.此外,每种类型的流可能在他们需要的数据成员中有一些差异 - 可能使用符合您实际需要的最小功能类可以节省内存,时间初始化或检查其他变量等.


Ant*_*ony 3

重点是要通用。如果你只需要读取一个文件,你可以将一个ifstream作为参数,然后任何支持读取的东西都可以传入,即使它是不可写的。反之亦然。

  • 我根本不明白这个答案与这个问题有什么关系。 (2认同)