Как удалить запись из файла? - PullRequest
1 голос
/ 01 марта 2011

Я хочу удалить некоторую информацию из текстового файла, не сдвигая все его записи.Например, текстовый файл customers.txt дается.в нем много записей, разделенных # разделителем.и каждая запись содержит поля, разделенные ;.Например: 1665;John;Smith учитывая идентификатор клиента, я хочу удалить клиента с соответствующим идентификатором.Я могу найти смещение и длину записи в файле, но не знаю, как ее удалить.я должен переписать весь файл?

Примечание: Я использую Standard C ++ с g ++ 4.5 и libst4.

Ответы [ 2 ]

8 голосов
/ 01 марта 2011

У вас есть несколько вариантов. 1) переписать оставшуюся часть файла после удаляемой записи. 2) замените запись каким-либо индикатором, что она была удалена, и обработайте ее при разборе файла (например, заменив удаляемую запись на # или другой специальный символ).

3 голосов
/ 01 марта 2011

Да, вам нужно переписать весь файл.

Я бы предложил этот алгоритм:

  • создать временный файл;
  • для каждой записи, которая не будет удалена, скопируйте ее во временный файл;
  • замена временного файла на оригинальный файл.
...