Writing at the beginning of a file, keeping file contents

Jorge Vega Sánchez picture Jorge Vega Sánchez · Nov 26, 2012 · Viewed 10.7k times · Source

I have a text file where I want to write. I want to keep the file content always. I want to write following a "FIFO" (last write always on the top line of the file).

I try using fout.open("filename"); with ate mode to keep file content, after that use seekg(0) trying to take back writing cursor to the begining of the file. Didn't work.

The unique way I found to do that I think it's so time-expensive, copy all the file content to a temporary file. Write want I want to write and after that write the content of the temp file at the end of the target file.

There must be an easy way do this operation?

Answer

Constantin picture Constantin · Nov 26, 2012

Jorge, no matter what you will have to rewrite the entire file in memory. You cannot simply keep the file where it is and prepend memory, especially since it's a simple text file (maybe if there was some form of metadata you could...)

Anyways, your best chance is to flush the old contents into a temporary location, write what you need and append the old contents.