Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/01/2012, 11:12
Avatar de Der_Gregor
Der_Gregor
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 9
Antigüedad: 12 años, 4 meses
Puntos: 0
Dividir parrafos de un fichero a otro

Hola muy buenas!!..
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:
#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;
}
Agradezco de antemano cualquier ayuda.. Un abrazo!!!...