对于下面的代码:
fstream file("file.txt", ios::in):
//some code
//"file" changes here
file.close();
file.clear();
file.open("file.txt", ios::out | ios::trunc);
如何更改最后三行以使当前文件不关闭,而是“重新打开”并清空所有内容?
最佳答案
如果我对问题的理解是正确的,您想在不关闭文件的情况下清除文件的所有内容(即通过设置 EOF 位置将文件大小设置为 0)。据我所知,您提供的解决方案是最吸引人的。
您的另一个选择是使用特定于操作系统的函数来设置文件结尾,例如 Windows 上的 SetEndOfFile() 或 POSIX 上的 truncate()。
如果您只想从文件的开头开始写入,Simon 的解决方案就可以了。在不设置文件结尾的情况下使用它可能会使您陷入垃圾数据超过您写入的最后位置的情况。
关于c++ - 如何覆盖当前文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15060087/