c++ - 如何在文件仍然打开时删除文本文件的内容(不重新打开文件)?
问题描述
我只想打开一个文本文件一次。假设我打开一个文本文件,并要求用户输入一些内容,然后将其写入文本文件。然后,用户想要修改需要重写文件中所有内容的内容。如何在不关闭文件并重新打开它的情况下实现这一点?
解决方案
它仅在 C++17 之后可用std::filesystem::resize_file()
namespace fs = std::filesystem;
fs::path p = fs::current_path() / "inputfile";
std::fstream file(p);
// Read file content
std::string str;
std::getline(file, str);
// Truncate file
fs::resize_file::resize_file(p, 0);
在此之前,在标准 C++ 中使用 fstream 是不可能的。您需要使用特定于系统的代码,例如SetEndOfFile()
在 Windows 或ftruncate()
Linux 上
也可以看看
推荐阅读
- android - 如何在 Android 活动中打开某种文件类型?
- javascript - Ajax 获取传递值到下一次获取
- c++ - Windows 10 上的 OpenGL SwapBuffers() 延迟
- python - 把你放在文本python前面
- python-3.x - Django 从 html 表单文件字段中保存文件
- android - 分析 Android 设备上的内存使用情况(堆、堆栈、GPU 的 OpenCL 缓冲区)
- javascript - 我之前的问题的一个附带问题:三元运算符
- continuous-integration - Gitlab - 提交时自动格式化代码
- javascript - 如何根据屏幕高度设置变量
- python - 如何在 Python 中计算两个不同数据结构中两个数字节点之间的增量?