Изменение двоичного файла - PullRequest
0 голосов
/ 13 июля 2011

У меня есть файл на Windows.Я пишу на C ++.У меня проблема, когда мне нужно удалить несколько байтов из конца файла.Я использую ifstream, но я не знаю, как удалить эти символы, просто вставьте '\ 0' в файл или что?

Ответы [ 3 ]

2 голосов
/ 13 июля 2011

На Linux-машинах используйте truncate (): http://linux.die.net/man/2/truncate

На компьютерах с Windows используйте SetEndOfFile ():

http://msdn.microsoft.com/en-us/library/aa365531%28v=vs.85%29.aspx

Оба вызова зависят от операционной системы.

2 голосов
/ 13 июля 2011

Вы не можете изменить размер файла;единственный способ сделать это - скопировать файл во временный файл, затем удалить оригинал и переименовать временный.) имеют функции системного уровня, которые могут это делать, но в стандарте нет ничего, что поддерживало бы это.И если вам когда-нибудь придется удалять байты, отличные от конца, ни Windows, ни Unix не разрешают это (хотя некоторые другие системы делают это, по крайней мере, в определенных случаях).

1 голос
/ 13 июля 2011

Почему бы не обрезать файл?Взгляните на метод chsize().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...