Как очистить файл в режиме добавления в C++

У меня есть файл, над которым мне требуется несколько операций. Иногда я просто хочу добавить данные в конец файла, иногда я просто хочу прочитать из файла, а иногда я хочу стереть все данные и записать из начала файла. И затем мне снова нужно добавить данные в конец файла.

Я использую следующий код:

ofstream writeToTempFile;
ifstream readFromTempFile;

writeToTempFile.open("tempFile.txt", ios::app | ios::out);
readFromTempFile.open("tempFile.txt", ios::in); 

// Reading and Appending data to the file
// Now it is time to erase all the previous data and start writing from the beginning


writeToTempFile.open("tempFile.txt", std::ofstream::trunc); // Here I'm removing the contents.

// Write some data to the file

writeToTempFile.open("tempFile.txt", std::ofstream::app); // Using this, I'm again having my file in append mode

Но то, что я сделал, работает неправильно. Пожалуйста, предложите мне какое-нибудь решение на C++. (Нет в С)


person Arslan Ali    schedule 12.01.2014    source источник
comment
Вы закрываете writeToTempFile перед повторным вызовом open? Вам нужно будет сделать это, иначе open не сработает. cplusplus.com/reference/fstream/fstream/open Если поток уже связан с файлом (т. е. он уже открыт), вызов этой функции завершается ошибкой.   -  person csteifel    schedule 12.01.2014


Ответы (1)


Проблема с кодом:

Я не закрывал файл, пока снова не вызвал для него метод open.

Итак, close файл перед повторным открытием с другими разрешениями.

person Arslan Ali    schedule 27.10.2014