从 C++ 中的偏移量覆盖二进制文件的字节

Overwriting bytes of a binary file from an offset in C++

在此操作中,我首先复制我的源二进制文件。

然后我希望从特定偏移量开始覆盖复制文件中的字节。

我用 seekp(offset,std::ios::beg) 移动到所需的位置,然后用

开始覆盖过程

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

然后关闭文件。

当我在十六进制编辑器中打开处理过的文件时,我在开始写入的偏移量之前看到的所有字节都是 zeros 并且我使用此操作写入的字节已成功写入。

流的模式是std::fstream(path, std::ios::out | std::ios::binary);

我在这个操作中遗漏了什么吗?

如果要保留旧内容,请以 in/out 模式打开它。即 ios::in | ios::out.

此外,如果您使用的是 std::fstream,这是默认行为,因此您可以直接使用:std::fstream(path, std::ios::binary).