c ++ очищает содержимое файла после определенной позиции - PullRequest
3 голосов
/ 30 мая 2011

Я бы хотел использовать fstream или, предпочтительно, QFile, чтобы удалить содержимое файла после определенной позиции (это не начало или конец файла). Поэтому сначала я перехожу на эту позицию с QFile::seek(long) или эквивалентным значением в постоянное время , а затем я хотел бы удалить оставшуюся часть содержимого, также в постоянное время. Какой подход вы рекомендуете?

Ответы [ 3 ]

9 голосов
/ 30 мая 2011

Вы можете использовать QFile::resize, чтобы изменить размер файла до желаемого размера. Бьюсь об заклад, он использует truncate за кулисами (см. Пост Эндрю).

3 голосов
/ 30 мая 2011

Lookup ...

#include <unistd.h>
int ftruncate(int fildes, off_t length);
int truncate(const char *path, off_t length);

Быстрый отрывок с этого сайта уступил ...

Если файл ранее был больше, чем длина,дополнительные данные отбрасываются.

Вы также можете найти этот ответ интересным.

0 голосов
/ 30 мая 2011

Рассматривать новую позицию после seek() как конец файла. Когда вы закончите работать с файлом, напишите все от запуска до этого момента.

...