【发布时间】: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
答:
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
是的,根据 [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(同样与 in 对 ifstream)。
【讨论】: