我需要以读写模式打开一个文件,读取其内容,然后清空所有内容。因此,我不能使用截断模式打开它。我该怎么办?
没有一种标准的方法可以从打开的std::fstream中清除文件内容,因此直接处理这两个操作就是最简单的方式.. 两个 操作。
首先处理所有的读取操作,然后再通过另一个流对象进行写入操作。
换句话说,首先以只读模式(std::ifstream)打开文件并读取所需数据,然后放弃该文件句柄并再次打开文件... 这次以只写和截断模式(std::ofstream)打开文件,以便清除文件内容。
std::ifstream ifs ("some_file.txt");
... // read old data
ifs.close ();
std::ofstream ofs ("some_file.txt", std::ios::out | std::ios::trunc); // clear contents
... // write new data
ofs.close ();
在读取文件之前,您可以将文件重命名,并创建一个原始名称的空文件。