我只想一次打开一个文本文件。假设我打开一个文本文件,然后要求用户输入一些内容,然后将其写入文本文件中。然后,用户想要修改一些内容,要求重写文件中的所有内容。如何在不关闭文件然后再次重新打开的情况下实现此目的?
答案 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/
祝你好运!