如何使用 fstream 打开文件后清空其内容?

4

我需要以读写模式打开一个文件,读取其内容,然后清空所有内容。因此,我不能使用截断模式打开它。我该怎么办?


你说的“clear all”是什么意思? - hft
读完文件后清空所有内容。 - eap
哎呀,我怎么删除我的帖子? - Ron
2个回答

17

抱歉让你失望,但是...

没有一种标准的方法可以从打开的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 ();

0

在读取文件之前,您可以将文件重命名,并创建一个原始名称的空文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接