【问题标题】:Is there a difference between ifstream::binary and ios::binary?ifstream::binary 和 ios::binary 之间有区别吗?
【发布时间】:2015-07-30 14:01:45
【问题描述】:

我见过这样写的代码:

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

现在这让我很困惑,上面的代码和下面使用ios::binaryios::in 作为替换的代码之间有什么区别吗?

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

【问题讨论】:

    标签: c++ file-io iostream


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      来自 Josuttis N.M. - The Standard Library A Tutorial and Reference

      第 15.2 章 基本流类和流对象

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-13
        • 1970-01-01
        • 2019-11-08
        • 2017-06-24
        • 2015-05-31
        • 2011-01-19
        • 1970-01-01
        • 2013-08-29
        相关资源
        最近更新 更多