Обновлять только часть двоичного файла с помощью c ++

Возможно ли обновить только часть файла в c ++?

Пример:

Старый файл A: 'A''A''A''B''B''C''C''C'
Новый файл A: ' 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();

Есть ли способ сделать это, или каждый раз нужно переписывать весь файл это меняется?

Спасибо

5
задан zitroneneis 18 August 2010 в 14:31
поделиться