ifstream :: binary和ios :: binary之间有区别吗?

时间:2015-05-18 22:32:38

标签: c++ file-io iostream

我见过这样编写的代码:

ifstream fin;
fin.open("largefile.dat", ifstream::binary | ifstream::in);

现在这让我感到困惑,上面的代码和下面这段代码使用ios::binaryios::in作为替代品有什么不同吗?

ifstream fin;
fin.open("largefile.dat", ios::binary | ios::in);

2 个答案:

答案 0 :(得分:7)

没有区别。这些名称继承自具体流类派生的虚拟基础std::ios_base

答案 1 :(得分:2)

来自 Josuttis N.M. - 标准库教程和参考

第15.2章基本流类和流对象

  

IOStream库的流类形成层次结构:

enter image description here

  

此类层次结构中的类扮演以下角色:
1。基类ios_base 定义所有流类的属性,与字符类型和相应的字符特征无关。该类的大部分由状态和格式标志的组件和函数组成。类模板basic_ios<>派生自ios_base并定义公共属性   所有依赖于字符类型和相应字符的流类   特征。这些属性包括流使用的缓冲区的定义。缓冲区是一个   从模板类basic_streambuf<>派生的类的对象与对应的   模板实例化。它执行实际的阅读和/或写作。类模板basic_istream<>basic_ostream<>实际上来自   basic_ios<>并分别定义可用于读取或写入的对象。喜欢   basic_ios<>,这些类是使用字符类型及其参数化的模板   特征。当国际化无关紧要时,角色的相应实例化   键入char - istreamostream - 使用。
4。类模板basic_iostream<>派生自basic_istream<>和。{1}}   basic_ostream<>。此类模板定义可用于读取和读取的对象   写作。
5.类模板basic_streambuf<>是IOStream库的核心。这个班   定义所有可以由流写入或读取的表示的接口   其他流类用于执行字符的读写。访问   一些外部表示,类派生自basic_streambuf<>