首页 > 解决方案 > 如何在文件仍然打开时删除文本文件的内容(不重新打开文件)?

问题描述

我只想打开一个文本文件一次。假设我打开一个文本文件,并要求用户输入一些内容,然后将其写入文本文件。然后,用户想要修改需要重写文件中所有内容的内容。如何在不关闭文件并重新打开它的情况下实现这一点?

标签: c++filetext-filesofstream

解决方案


它仅在 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 上

也可以看看


推荐阅读