¿Es posible actualizar solo una parte de un archivo en C++?Actualizar solo parte de un archivo binario con C++
Ejemplo:
Antiguo Archivo A: 'A''A''A''B''B''C''C''C'
nuevo archivo A: ' A''A''A' 'X''X' 'C''C''C'
que los archivos reales no son tan pequeños como estos ejemplos, y no saben exactamente qué ha cambiado (offset y writeLenght para contenido modificado) sería genial poder abrir un archivo, establecer la transmisión en la posición correcta, escribir la información y cierra el archivo de nuevo ... pero esto dará lugar a un archivo que se ve así:
Archivo actualizado: '0''0''0''X''X''C''C' ' C'
este es el código que utilicé:
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();
¿hay una manera de hacer esto, o tiene todo el archivo que reescribirse cada vez que se cambia?
Gracias
Gracias por su respuesta. Eso es exactamente lo que estaba buscando. En cuanto a los caracteres: estoy escribiendo un programa de prueba de estrés para tarjetas de memoria flash. Tengo que ser capaz de generar patrones donde cada byte tiene un valor definido. Estos patrones se almacenan internamente y se escriben en un archivo. De vez en cuando los leo de vuelta y los comparo con los patrones almacenados. Entonces puedo decir la posición exacta del error y verificar si es reproducible. – zitroneneis