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

时间:2019-04-01 14:14:00

标签: c++ file-io

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

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

我将seekp(offset,std::ios::beg)移到所需位置,并使用以下命令开始覆盖过程

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

然后关闭文件。

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

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

此操作中我缺少什么吗?

enter image description here

1 个答案:

答案 0 :(得分:4)

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

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