是否可以仅更新C++中的文件的一部分?用C++更新二进制文件的一部分
例子:
旧文件答:'A''A''A''B''B''C''C''C'
新文件:“ A''A''A” ‘X''X’‘C''C''C’
为真正的文件是不是像细小这些例子,我不知道到底发生了什么变化(offset和writeLenght用于更改内容),能够打开文件,将流设置到正确的位置,写入信息以及再次关闭该文件....但这会导致一个如下所示的文件:
已更新的文件:'0''0''0''X''X''C''C'' C”
这是我使用的代码:
void update file(list<unsigned char> content, int offset){
fs::basic_ofstream<char> fileStream(path , ios::out | ios::binary);
list< unsigned char >::const_iterator contentIter = content.begin();
// begin write operation at the offset
advance(contentIter , offset);
fileStream.seekp(offset);
while(contentIter != content.end()){
unsigned char value = (char)*contentIter;
fileStream.put(value);
++contentIter;
}
fileStream.close();
有没有办法做到这一点,或有被改写每次它改变了整个文件?
谢谢
谢谢您的回答。这正是我所期待的。 关于字符:我正在为闪存卡写一个压力测试程序。我必须能够在每个字节具有定义的值的情况下生成模式。这些模式存储在内部并写入文件。我不时读回来,并将它们与存储的模式进行比较。然后我可以知道错误的确切位置,并检查它是否可以重现。 – zitroneneis 2010-08-19 08:47:46