c++ - txt - Reemplazar una línea en archivo de texto
leer palabras de un archivo en c (3)
Quiero reemplazar una línea de texto en un archivo, pero no conozco las funciones para esto.
Tengo esto:
ofstream outfile("text.txt");
ifstream infile("text.txt");
infile >> replace whit other text;
¿Alguna respuesta para esto?
Extraño decir, para agregar texto en Alguna línea en el archivo ...
Ejemplo
infile.add(text, line);
¿Tiene C ++ funciones para esto?
Debe buscar la posición correcta de la línea / char en el archivo y luego sobrescribir. No hay función para buscar y reemplazar como tal (que yo sepa).
La única forma de reemplazar texto en un archivo, o agregar líneas en el medio de un archivo, es reescribir el archivo completo desde el punto de la primera modificación. No puede "crear espacio" en el medio de un archivo para nuevas líneas.
La forma más confiable de hacerlo es copiar el contenido del archivo en un nuevo archivo, hacer las modificaciones sobre la marcha y luego usar el rename
de rename
para sobrescribir el archivo anterior con el nuevo.
Me temo que probablemente deba volver a escribir todo el archivo. Aquí es cómo puedes hacerlo:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
string strReplace = "HELLO";
string strNew = "GOODBYE";
ifstream filein("filein.txt"); //File to read from
ofstream fileout("fileout.txt"); //Temporary file
if(!filein || !fileout)
{
cout << "Error opening files!" << endl;
return 1;
}
string strTemp;
//bool found = false;
while(filein >> strTemp)
{
if(strTemp == strReplace){
strTemp = strNew;
//found = true;
}
strTemp += "/n";
fileout << strTemp;
//if(found) break;
}
return 0;
}
Fichero de entrada:
ONE
TWO
THREE
HELLO
SEVEN
Archivo de salida:
ONE
TWO
THREE
GOODBYE
SEVEN
Simplemente elimine el comentario de las líneas comentadas si solo quiere que reemplacen la primera ocurrencia. Además, lo olvidé, al final agregué el código que elimina filein.txt y cambia el nombre de fileout.txt a filein.txt.