A:
std::ofstream("test.txt", std::ios_base::app);
B:
std::ofstream("test.txt", std::ios_base::app|std::ios_base::out);
C ++标准保证A是否与B相同?
答案 0 :(得分:4)
是的,根据[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
一起(同样in
用于ifstream
)。