我正在编写一个方法来替换二进制文件中的指定字符串,它在我使用seekp设置的位置之前写入NULL,然后写入字符串并关闭流。我只想替换文件中的一些字节。在这段代码之前,我尝试使用ofstream与ios :: binary和ios :: out标志。销毁文件中的所有数据有什么问题? 在这段代码之前,我用ifstream实例打开文件,读取相同的位置,验证字符串中的第一个字节。我只是对此进行评论以获取信息。
谢谢大家!
代码:
fstream ofs();
ofs.open(nomArchBin,ios::in | ios::out | ios::binary);
if (!ofs.good()) {
cout << "...";
return;
}
ofs.seekp(despEnArchivo,ios::beg);
char* registroChar = registroACadena(reg);
ofs.write(registroChar,cabecera.tamanioReg);
答案 0 :(得分:3)
我知道这听起来很傻,但是打开文件进行写作的唯一方法
而不是截断它是打开它阅读:如果你是
真的在做ios::in | ios::out | ios::binary
,它应该有效。 (但
因为你显然重新输入了代码,并没有复制/粘贴它,我是
不确定这是否真的是你做的。)
尝试寻求时必须注意的其他要点: