C++ 在fstream::out模式下打开fstream是否会删除其当前内容?

C++ 在fstream::out模式下打开fstream是否会删除其当前内容?,c++,file-io,fstream,eof,C++,File Io,Fstream,Eof,正如标题所说,在fstream::out模式下打开fstream是否会删除其当前内容? 如果没有,使用fstream库擦除.txt文件的最佳方法是什么 和C++中的代码> EOF的等价性是什么?p> 当一个std::basic_filebuf打开一个文件时,它的行为就好像它调用了相关的C函数一样(实际上是否调用取决于实现) [filebuf.members]中的表格概述了当传递某些标志时会发生什么,如果您只传递std::ios_base::out,那么它的行为就好像文件是用stdio字符串“w”

正如标题所说,在
fstream::out
模式下打开
fstream
是否会删除其当前内容? 如果没有,使用
fstream
库擦除.txt文件的最佳方法是什么


<>和C++中的代码> EOF的等价性是什么?p> 当一个
std::basic_filebuf
打开一个文件时,它的行为就好像它调用了相关的C函数一样(实际上是否调用取决于实现)

[filebuf.members]中的表格概述了当传递某些标志时会发生什么,如果您只传递
std::ios_base::out
,那么它的行为就好像文件是用stdio字符串
“w”
打开的,如果文件已经存在,它将擦除文件

如果未传递任何标志,则
fstream
的默认值是使用
std::ios_base::in | std::ios_base::out
调用
basic_filebuf::open
,这就好像使用了
“r+”
,从而将文件位置定位在文件的开头,但如果文件已经存在,则保留完整的内容

供参考:


根据:“
trunc
文件打开前存在的任何内容都将被丢弃。”为了回答第二个问题,
EOF
相当于
EOF
。等效的<代码> FOF是 ISReAM::EOF,注意在C++中使用这个在C.NB中是同样错误的。因为你有两个独立的问题,所以你应该发布两个独立的问题(或者尝试发布两个独立的问题,我希望这两个问题都存在重复)