如何在文本文件仍处于打开状态(不重新打开文件)的情况下删除其内容?

时间:2019-12-03 13:25:39

标签: c++ file text-files ofstream

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

2 个答案:

答案 0 :(得分:1)

仅自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);

在此之前,在带有fstream的标准C ++中是不可能的。您需要使用系统特定的代码,例如Windows上的SetEndOfFile()或Linux上的ftruncate()

另请参见

答案 1 :(得分:0)

如果文件已经存在,并且您想打开文件并覆盖文件中的所有内容,我建议您查看ios_base :: trunc()。

快速阅读一下,如果您对使用任何特定功能有任何疑问,请告诉我:http://www.cplusplus.com/reference/ios/ios_base/openmode/

祝你好运!