una txt reemplazar por palabras otra linea leer guardar datos crear como cadena buscar archivos archivo c++ stream ifstream

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.