Estoy intentando hacer un programita que parsee un fichero de texto demo.txt (muy desordenado) y divida cada párrafo desde una letra mayúscula hasta un punto aparte y lo guarde en otro fichero resultado pero linea por linea (1 párrafo por cada linea).
_____________________demo.txt____________________
Hola esta es una linea simple sin punto final
Esta linea empieza con una tabulacion pero tiene punto final y empieza con una mayúscula. Este párrafo es complementario del anterior porque no hay un punto a parte entonces deberia pertenecer al mismo parrafo.
Aquí empieza un párrafo bonito porque el anterior párrafo tuvo un punto y aparte.
En la linea anterior hay un \n pero no importa porque yo solo necesito cortar párrafos.
Aquí hay una gran tabulacion entonces habría que quitar el espacio.
_________________________________________________
Hasta ahora tengo escrito este pequeño código pero me tira todo el string en el fichero de una vez osea del tiron.
Código:
Agradezco de antemano cualquier ayuda.. Un abrazo!!!... #include <fstream> #include <iostream> #include <string> using namespace std; string leer_parrafo( istream &in ) { string result, line; // Leer y concatenar las líneas hasta que dos nuevas líneas sean leidas while (getline( in, line )) { if (line.empty()) break; else result += line +' '; // Deshacerse de ese último espacio result.erase( result.length() -1 ); // Encontrar un string que no pertenesca al tabulador horizontal, // nueva linea, tabulador vertical o retorno de carro string::size_type i = result.find_first_not_of ( " \t\n\v\r\f" ); if ( i != string::npos ) continue; } return result; } int main() { cout << "Leyendo parrafos desde el fichero...\n"; ifstream file( "demo.txt" ); ofstream resul( "resultado.txt" ); // Leer el fichero llamando a la funcion leer_parrafo string fichero_parrafo = leer_parrafo( file ); file.close(); cout << "Excribiendo parrafos al fichero resultado.txt...\n"; //escribir la cadena fichero_parrafo en resultado.txt resul << fichero_parrafo; //cerrar el fichero resul resul.close(); cout << "ECHO.." << endl; return 0; }