在此操作中,我首先复制源二进制文件。
然后我希望从特定的偏移量开始覆盖复制文件中的字节。
我将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);
此操作中我缺少什么吗?
答案 0 :(得分:4)
如果要保留旧内容,请以输入/输出模式打开。即ios::in | ios::out
。
此外,如果您使用的是std::fstream
,则这是默认行为,因此您可以使用std::fstream(path, std::ios::binary)
。