【发布时间】:2018-11-21 21:18:26
【问题描述】:
【问题讨论】:
-
真正的问题是:你为什么还要关心?
-
ifstream和ofstream是为了方便,fstream是真正的工作完成的地方。 -
@DimChtz 只是为了好奇 ;-)
标签: c++ fstream iostream ofstream
【问题讨论】:
ifstream 和 ofstream 是为了方便,fstream 是真正的工作完成的地方。
标签: c++ fstream iostream ofstream
您必须向作者 Bjarne Stroustrup 询问明确的答案。在 1985 年 USENIX Proceedings 上发表的关于 iostreams 的原始论文中,他似乎非常强调效率:
内联扩展函数用于基本操作(如“将字符放入缓冲区”),因此基本开销往往是每个写入(或读取)的简单对象(整数、字符串等)调用一个函数每次缓冲区溢出加上一个函数调用。
所以这可能是原因。
我猜你可以将通用文件 I/O 功能提取到 mixin 中,但这需要virtual 继承才能允许菱形继承,这会在访问时增加额外的间接性底层basic_filebuf。
此外,由于文件读/写模式通常在打开文件后无法更改,因此能够将fstream 转换为ifstream 或ofstream 会产生不一致,因为您可以获得可写的ifstream或可读的ofstream。
【讨论】: