Прочтите из файла, очистите его, напишите ему

Я пытаюсь прочитать данные из текстового файла, очистить его, а затем записать в него в этом порядке с помощью класса fstream.

Мой вопрос заключается в том, как очистить файл после его чтения. Я знаю, что я могу открыть файл и очистить его в одно и то же время, но есть ли какая-то функция, которую я могу вызвать в потоке, чтобы очистить его содержимое?

Ответы

Ответ 1

Вы должны открыть его, выполнить свои операции ввода, а затем закрыть его и снова открыть его с помощью флага std:: fstream:: trunc.

#include <fstream>

int main()
{
    std::fstream f;
    f.open("file", std::fstream::in);

    // read data

    f.close();
    f.open("file", std::fstream::out | std::fstream::trunc);

    // write data

    f.close();

    return 0;
}

Ответ 2

Если вы хотите быть абсолютно безопасным в случае аварии или другого катастрофического события, вы должны сделать запись во второй временный файл. После завершения удалите первый файл и переименуйте временный файл в первый файл. Подробнее об этом можно узнать в библиотеке Boost Filesystem.