Прочтите из файла, очистите его, напишите ему
Я пытаюсь прочитать данные из текстового файла, очистить его, а затем записать в него в этом порядке с помощью класса 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.