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?
Asked
Active
Viewed 2.3k times
4
-
what do you mean by "clear all"? – hft Jun 12 '14 at 16:09
-
Clear all the content of the file after read it. – eap Jun 12 '14 at 16:09
-
oops how do i delete my post? – Ron Sep 14 '18 at 18:25
2 Answers
17
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 ();

Community
- 1
- 1

Filip Roséen - refp
- 62,493
- 20
- 150
- 196
0
You could just rename the file before reading it and create an empty file with the original name.

Maxim Egorushkin
- 131,725
- 17
- 180
- 271