我花了很长时间才发现我的.open()
来电未打开文件,因为我同时设置了trunc
和app
模式选项。我只是在抓住C++ docs上写的一个小纸条后想出来了。
这似乎是一个奇怪的陷阱。为什么会这样?你能不截断文件,然后才追加?或者这被认为是多余的规范?
答案 0 :(得分:3)
允许的标志组合在标准的[filebuf.members]中指定。表132给出了可能性:
因此,由于trunc
和app
的组合不在表中,因此需要打开才能失败。
答案 1 :(得分:2)
iostream
开放模式大致对应于C库中的fopen
模式,fopen
具有截断的w
模式和a
模式附加,但没有两者的组合。