Editar ficheros con c++

Iniciado por jona_x17, 1 Junio 2015, 19:57 PM

0 Miembros y 1 Visitante están viendo este tema.

jona_x17

hola intento hacer el código de un programa en dev-c++ como ejercicio de clases, no pido una solución sino algo de ayuda ya que es algo en lo que me veo superado
Se trata de hacer un "buscador" que ordene información de un fichero.
con datos separados por ";"
ejemplo de fichero.txt fuente:
nombre1; apellido1; 30; trabajo1
nombre2; apellido2; 30; trabajo2
nombre3; apellido3; 25; trabajo1


y se trata de ordenar la información en dos nuevos documentos.

ejemplo año.txt:
25
nombre3; apellido3; trabajo1

30
nombre1; apellido1; trabajo1;
nombre2; apellido2; trabajo2;


ejemplo trabajo.txt:

trabajo1
nombre1; apellido1; 30
nombre3; apellido3; 25

trabajo2
nombre2; apellido2; 30


El código que de momento tengo es el siguiente (ni de casualidad es parte de la solución final)


codigo:
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct st{
string nombre;
string apellido;
int año;
int trabajo;
};

int main () {
st s[11];
   ifstream fichero ("fichero.txt");
   ofstream año ("año.txt",ios::app);
   ofstram trabajo ("trabajo.txt",ios::app);
   
   string linea;
   int cont=0;
   int pc;
   
   while(fichero.good()){
    getline(fichero, linea);
    pc=linea.find(";");
    s.nombre[cont]=linea.erase(0,pc);
    linea=linea.erase(0,pc+1);
    cont++; // no se como indicar que empiece a leer desde la siguiente linea al volver a pasar por el while la próxima vez (con todos)
   }
   cont=0;
   while(fichero.good()){
    getline(fichero, linea);
    pc=linea.find(";");
    s.apellido[cont]=linea.erase(0,pc);
    linea=linea.erase(0,pc+1);
    cont++;
   }
   cont=0;
   while(fichero.good()){
    getline(fichero, linea);
    pc=linea.find(";");
    s.año[cont]=linea.erase(0,pc);
    linea=linea.erase(0,pc+1);
    cont++;
   }
   cont=0;
   while(fichero.good()){
    getline(fichero, linea);
    pc=linea.find(";");
    s.trabajo[cont]=linea.erase(0,pc);
    linea=linea.erase(0,pc+1);
    cont++;
   }
     
   fichero.close();;
   año.close();
   trabajo.close();  
   system ("PAUSE");
   return 0;
}

Cualquier consejo, para como introducir la información a la estructura o si en vez de una estructura es mejor usar una matriz o vector, alguna cosa que me permita salir de este punto muerto se agradece. Al igual que en caso de olvidarme de alguna librería o el uso de alguna función.
El ejercicio se trata de peliculas, si no he podido cambiar algun dato referente a titulo o director o algo lo menciono para no ocacionar ningun error a nadie. gracias


Mod: los códigos deben ir en etiquetas GeSHi