Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么fstream.open()会失败;如果模式同时设置了trunc和app;?_C++_Io_Fstream - Fatal编程技术网

C++ 为什么fstream.open()会失败;如果模式同时设置了trunc和app;?

C++ 为什么fstream.open()会失败;如果模式同时设置了trunc和app;?,c++,io,fstream,C++,Io,Fstream,我花了很长时间才发现我的.open()调用没有打开文件,因为我同时设置了trunc和app模式选项。我是在抓到一张写在纸上的小纸条后才发现这一点的 这似乎是个奇怪的问题。为什么会这样?您不能先截断文件,然后只追加吗?或者这被认为是多余的规范?iostream打开模式大致对应于C库中的模式,fopen有一个截断的w模式和一个附加的a模式,但没有这两种模式的组合。中规定了允许的标志组合标准中的[filebuf.members]表132给出了以下可能性: P> >由于 Tunc和 App不在表中,

我花了很长时间才发现我的
.open()
调用没有打开文件,因为我同时设置了
trunc
app
模式选项。我是在抓到一张写在纸上的小纸条后才发现这一点的


这似乎是个奇怪的问题。为什么会这样?您不能先截断文件,然后只追加吗?或者这被认为是多余的规范?

iostream打开模式大致对应于C库中的模式,
fopen
有一个截断的
w
模式和一个附加的
a
模式,但没有这两种模式的组合。

中规定了允许的标志组合标准中的[filebuf.members]表132给出了以下可能性:


<> P> >由于 Tunc和 App不在表中,所以打开需要失败。

如何丢弃现有文件内容并同时保存它?C++ + IoFrices并没有被强制使用内部的C/IO库,那么这应该是什么?<代码> Basic文件FILBUF::“就像通过调用
std::fopen(s,modstr)
”即使它实际上没有在内部使用它。请参阅[filebuf.members]/2