Перезапись байтов двоичного файла смещением в C ++ - PullRequest
1 голос
/ 01 апреля 2019

В этой операции я сначала копирую исходный двоичный файл.

Затем я хочу начать перезапись байтов в скопированном файле, начиная с определенного смещения.

Я перемещаюсь с seekp(offset,std::ios::beg) в нужную позицию и начинаю процесс перезаписи с

file.write(reinterpret_cast<const char*>(&my_vector[0]), my_vector.size()*sizeof(unsigned char));

Затем закройте файл.

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

Режим потока std::fstream(path, std::ios::out | std::ios::binary);

Что-то мне не хватает в этой операции?

enter image description here

1 Ответ

4 голосов
/ 01 апреля 2019

Если вы хотите сохранить старое содержимое, откройте его в режиме ввода / вывода. т.е. ios::in | ios::out.

Кроме того, если вы используете std::fstream, это поведение по умолчанию, поэтому вы могли просто использовать: std::fstream(path, std::ios::binary).

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