【问题标题】:Does `ios_base::app` guarantee `ios_base::out` is implicitly specified?`ios_base::app` 是否保证 `ios_base::out` 是隐式指定的?
【发布时间】:2014-08-21 12:13:56
【问题描述】:

答:

std::ofstream("test.txt", std::ios_base::app);

乙:

std::ofstream("test.txt", std::ios_base::app|std::ios_base::out);

C++ 标准是否保证 A 与 B 相同?

【问题讨论】:

    标签: c++ file io standards fstream


    【解决方案1】:

    是的,根据 [ofstream.cons]

    explicit basic_ofstream(const char* s,
        ios_base::openmode mode = ios_base::out);
    

    效果:构造一个basic_ofstream类的对象,用basic_ostream(&sb)初始化基类,用basic_filebuf<charT,traits>())初始化sb,然后调用rdbuf()->open(s, mode|ios_base::out)。如果该函数返回一个空指针,calls setstate(failbit)

    请注意,具有此保证的不是app,而是对底层streambuf本身的调用;您传递给构造函数/open 的任何标志始终与 out 进行 ored(同样与 inifstream)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多