Eliminar una linea concreta de un fichero

Iniciado por mester, 7 Noviembre 2015, 23:10 PM

0 Miembros y 1 Visitante están viendo este tema.

mester

Hola buenas, no sé como podría borrar una línea entera de un fichero.
Para hacer esto he leido el fichero entero guardando cada línea en un vector de dos dimensiones, saltandome la línea que quería eliminar, y posteriormente eliminando el fichero para crear otro. Pero busco algo más eficiente, para poder hacerlo en ficheros grandes y tal. ¿Como podría eliminar una fila concreta?
Justicia es dar a cada uno lo que se merece

ivancea96

Eliminar una fila implica sobreescribir todo lo que está desde el primer caracter de la fila a eliminar.

Así que tienes varias opciones. Una, es la que comentas. Otra, es volcar los contenidos del fichero a otro archivo temporal, y reescribir el fichero inicial.
Para evitar copiar datos 2 veces, puedes crear el nuevo arhcivo, eliminar el antiguo, y cambiar el nombre del nuevo. Pero ahí ya tendrás que hacer uso de librerías como boost, API del SO, u otras, para acceder al sistema de archivos (a parte de "system()").

mester

Cita de: ivancea96 en  8 Noviembre 2015, 02:07 AM
Eliminar una fila implica sobreescribir todo lo que está desde el primer caracter de la fila a eliminar.

Así que tienes varias opciones. Una, es la que comentas. Otra, es volcar los contenidos del fichero a otro archivo temporal, y reescribir el fichero inicial.
Para evitar copiar datos 2 veces, puedes crear el nuevo arhcivo, eliminar el antiguo, y cambiar el nombre del nuevo. Pero ahí ya tendrás que hacer uso de librerías como boost, API del SO, u otras, para acceder al sistema de archivos (a parte de "system()").
Anda, buena solución la de volcar todo en un fichero eliminando la línea que quiero. Con la de veces que he usado el visudo y no se me ha ocurrido eso para mi programa jeje.
Se agadece, otra vez.
Justicia es dar a cada uno lo que se merece