Возможно ли обновить только часть файла в 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();
Есть ли способ сделать это, или весь файлпереписывать каждый раз, когда он меняется?
Спасибо