How to clear the content of a file after it is opened using fstream? [duplicate]

强颜欢笑 提交于 2019-12-17 21:32:24

问题


I need to open a file in read/write mode, read its content and then clear all. So, I cannot open it in truncate mode. How can I do that?


回答1:


Hate to disappoint you, but..

There's no standard way of clearing the contents of a file from an open std::fstream, the straight forward way is therefore to handle the two operations as what they really are.. two operations.

First handle all the reading, and later the writing (through a different stream object).


The solution

In other words; first open the file in read-only mode (std::ifstream) and read the data you are interested in, then discard that file-handle and open the file again.. this time in write-only and truncation mode (std::ofstream), so that you will clear the contents of the file.

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 ();



回答2:


You could just rename the file before reading it and create an empty file with the original name.



来源:https://stackoverflow.com/questions/24189029/how-to-clear-the-content-of-a-file-after-it-is-opened-using-fstream

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!