Cómo sobrescribir solo parte de un archivo en c ++

Quiero hacer modificaciones en el medio de un archivo de texto usando c ++, sin alterar el rest del archivo. ¿Cómo puedo hacer eso?

Si la cadena de reemplazo tiene la misma longitud, puede realizar el cambio en su lugar. Si la cadena de reemplazo es más corta, es posible que pueda rellenarla con espacios de ancho cero o similares para convertirla en la misma cantidad de bytes y realizar el cambio en su lugar. Si la cadena de reemplazo es más larga, simplemente no hay espacio suficiente a menos que mueva primero todos los datos restantes.

Use std :: fstream .

El std :: ofstream más simple no funcionaría. Truncaría su archivo (a menos que use la opción std :: ios_base :: app, que de todos modos no es lo que quiere).

std::fstream s(my_file_path); // use option std::ios_base::binary if necessary s.seekp(position_of_data_to_overwrite, std::ios_base::beg); s.write(my_data, size_of_data_to_overwrite); 

En general, abra el archivo para leer en modo texto, lea línea tras línea hasta el lugar que desea cambiar, mientras lee las líneas, escríbalas en un segundo archivo de texto que haya abierto para escribir. En el lugar del cambio, escriba en el segundo archivo los datos nuevos. Luego continúe la lectura / escritura del archivo hasta su final.