Как добавить текст в начало текста в g ++ - PullRequest
3 голосов
/ 27 марта 2010

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

Ответы [ 2 ]

2 голосов
/ 27 марта 2010

Вы не можете добавить файл в начало файла без необходимости переписывать его с нуля. Он должен идти в конце (что имеет смысл, поскольку именно это означает слово «добавление»).

Если вы хотите пометить запись как удаленную, не оставляя места для этого флага, вам нужно поместить информацию в конец или переписать все.

Более разумный подход действительно заключается в резервировании места заранее - например, путем размещения «удаленного» поля в каждой записи.

0 голосов
/ 27 марта 2010

Одним из возможных решений является наличие определенных символов, которые обычно не допускаются в записях (кажется, что каждый файл является записью - исправьте меня, если я ошибаюсь):

Используйте эти символы в сочетании с некоторым количеством слов флагов (например, # удалено # или # 000, если # является символом, который обычно не допускается в записях).

Тогда просто перезаписать все, что происходит в начале записи; в любом случае он удаляется, поэтому не имеет значения, что вы перезаписываете его часть.

С другой стороны, это, вероятно, не очень хорошая идея, если вы ожидаете, что когда-нибудь понадобится восстановить «удаленные» файлы.

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

...