Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Dividir parrafos de un fichero a otro

Estas en el tema de Dividir parrafos de un fichero a otro en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/01/2012, 11:12
Avatar de Der_Gregor  
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 9
Antigüedad: 12 años, 11 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!!!...
  #2 (permalink)  
Antiguo 06/01/2012, 19:42
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 71
Respuesta: Dividir parrafos de un fichero a otro

A q te refieres con "parsear" el fichero de texto. Seria bueno que de en base a demo.txt la salida que necesita para analizar mejor el código que implemento y darle una ayuda.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #3 (permalink)  
Antiguo 08/01/2012, 12:19
Avatar de Der_Gregor  
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 9
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Dividir parrafos de un fichero a otro

Hola CapacProg, bueno en base a demo.txt un fichero resultado.txt igual al siguiente:
_____________________resultado.txt________________ ____
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.
_________________________________________________

Osea es demo.txt pero cada parrafo arreglado en cada linea nueva en resultado.txt (pero solo los verdaderos parrafos, los que empiezan con una mayúscula y terminan en un punto "por eso no se guardó la 1era linea de demo.txt ni la linea 5 que esta vacía", si es punto seguido, el siguiente párrafo corresponde al anterior, solo hay un nuevo párrafo cuando hay un punto y aparte.), lo que en realidad quisiera hacer con todo esto es ingresar por consola ./programa Palabras_a_Buscar. Palabras_a_Buscar podría ser "gran tabulacion" entonces solo la ultima linea de demo.txt debería guardarme en resultado.txt. Habria que meter cada parrafo en una variable y comparar si existe Palabras_a_Buscar en demo.txt, sino existe, pues resultado.txt estará en blanco y si existe solo me interesa ese párrafo que contiene la o las palabras claves.. No se si se entiende :)
Gracias por la respuesta.

Última edición por Der_Gregor; 10/01/2012 a las 14:02

Etiquetas: dividir, fichero, funcion, parrafos, string, cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:16.