我需要以读/写模式打开文件,读取其内容然后清除所有文件。所以,我无法在截断模式下打开它。我怎么能这样做?
答案 0 :(得分:13)
没有标准方法可以从打开的 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 ();
答案 1 :(得分:0)
您可以在读取文件之前重命名该文件,并使用原始名称创建一个空文件。