c++ - 如何覆盖当前文件?

标签 c++ file-io fstream

对于下面的代码:

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/

相关文章:

java - 通过公共(public)方法访问私有(private)成员变量

java - 限制Java文件中的输入数量

java - 在 Java 中使用 BufferedReader 重置缓冲区?

c++ - 函数头和重载函数的多个错误

c++ - fstream 在 Qt Creator 中不起作用

c++ - 在 AIX 上使用 ofstream

c++ - 模块加载崩溃 Astrisk-11.5.1 Confbridge

c++ - 为什么在访问元素之前在容器上使用 std::forward?

javascript - 使用 Javascript 格式化纯文本的最快方法

c++ - 混合 setStyleSheet 和 setFont : wrong background