• Domingo 22 de Diciembre de 2024, 22:37

Autor Tema:  como leer una linea en un fichero de texto  (Leído 1826 veces)

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
como leer una linea en un fichero de texto
« en: Martes 2 de Septiembre de 2008, 17:16 »
0
Hola,no es concretamente una línea,la cuestion es que tengo que leer de un fichero de texto y escribir en un fichero binario,eso lo tengo claro,pero mi linea en el fichero de texto es:

45689756:julian martinez:Fernandez:33

la cuestion es que si leo con getline(fic,linea),estoy leyendo toda la linea,y está claro que los : no los tengo que almacenar,como hago para leer quitando los :?

esa es mi cuestion,porque luego guardarlo en un fichero binario,lo tengo claro.

Me podeis ayudar?

AnimaSubtilis

  • Miembro MUY activo
  • ***
  • Mensajes: 172
  • Nacionalidad: co
    • Ver Perfil
Re: como leer una linea en un fichero de texto
« Respuesta #1 en: Martes 2 de Septiembre de 2008, 18:43 »
0
El getline tiene 3 datos o tres parametros

uno es la variable, el tamaño y el tercero es algo asi como el caracter a finalizar

fic.getline(var,20,':');

siendo fic una variable de tipo fstream

de resto es prueba y error y esta listo

espero que sea de ayuda
A menudo unas pocas horas de «prueba y ensayo» podrán ahorrarte minutos de leer manuales.
[size=150]
Dios nos Otorgo el uno y el cero....y con eso creamos un universo....[/size]

[size=109]↑°°°°ÄNÍMÄ §ÛBTÍLͧ°°°°↓[/size]


Iganguli

  • Miembro activo
  • **
  • Mensajes: 51
  • Nacionalidad: mx
    • Ver Perfil
Re: como leer una linea en un fichero de texto
« Respuesta #2 en: Martes 2 de Septiembre de 2008, 19:14 »
0
usa getline para leer todad la linea y despues separala con strtok y ya despues de que la haya separado lo guardas en el binario

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: como leer una linea en un fichero de texto
« Respuesta #3 en: Martes 2 de Septiembre de 2008, 19:17 »
0
no conocia la funcion getline(), pero para este caso parece ser perfecta ;)

aunque siempre puedes quemarte un poco la cabeza y lograr lo mismo.
otra manera de la cual podrias hacerlo (sabiendo el orden de los datos de antemano) con un while que almacene caracteres leidos mientras no sea un ':' y despues asignas al dato que corresponda la cadena resultante , duplicarias ese bucle la cantidad de veces igual a la cantidad de datos que tengas, capaz podrias meterlo dentro de una funcion para hacerlo mas prolijo.

saludos ;)

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: como leer una linea en un fichero de texto
« Respuesta #4 en: Martes 2 de Septiembre de 2008, 22:41 »
0
HOla,he sacado la solucion y se la digo a todos vosotros si os interesa ,ya que habeís puesto mucho interes..la idea es realizar una funcion de SacarPalabras(.......),,,como paramentros en referencia para poder asi mismo devolverlos ,de la siguiente manera:

void SacarCampos(string &matricula1,string &nombre1,string &apellidos1,string linea){

int j=0;
int longi;

   cout<<"aqui"<<endl;
   longi=linea.length();
   //cout<<longi<<endl;
   while(j<longi){
      
      while(linea[j]!=':'){

         matricula1=matricula1+linea[j];
      j++;   
      }
      j++;
      
      while(linea[j]!=':'){
         nombre1=nombre1+linea[j];
      j++;
      }
      j++;
      while(j<longi){
         apellidos1=apellidos1+linea[j];
      j++;
      }
      j++;

   
   }


}

Y luego como es normal la funcion de LeerFichero,donde puedo a la misma vez ,leer el fichero de texto y escribir en le fichero binario.


void LeerFichero(){
   
   string linea,matricula1,apellidos1,nombre1;
   Tcoche coche;
   bool correcto=false;
   fstream fic,fic2;
   fic.open("coches.txt",ios::in);
   fic2.open("coches.dat",ios::out |ios::binary);
   if ((!fic) || (!fic2)){
      cout<<"error apertura de fichero"<<endl;
   }
   else{
      
      getline(fic,linea);
      while(!fic.eof()){
            
         SacarCampos(matricula1,nombre1,apellidos1,linea);   
   
         strncpy(coche.matricula,matricula1.c_str(),10-1);
         coche.matricula[10-1]='';

         correcto=DniCorrecto(coche.matricula);
         
         strncpy(coche.nombre,nombre1.c_str(),10-1);
         coche.nombre[10-1]='';

         
         strncpy(coche.apellidos,apellidos1.c_str(),10-1);
         coche.apellidos[10-1]='';


         cout<<matricula1<<" "<<nombre1<<" "<<apellidos1<<endl;
         if(correcto==true){
            fic2.write( (const char*)&coche,sizeof(coche));
         }
         matricula1="";
         nombre1="";
         apellidos1="";
         getline(fic,linea);

      
      }


   }
}

Espero haberles ayudado.Gracias por el interes.

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: como leer una linea en un fichero de texto
« Respuesta #5 en: Miércoles 3 de Septiembre de 2008, 17:08 »
0
ah, ayer justo hice una funcion de sacar palabra.

Che, fijate cuando escribas un mensaje, arriba del campo de texto, hay unos botones que son como de texto embebido, uno dice "Code", pegas todo tu codigo ahi adentro y es mas agradable para leerlo jaja

;)


saludos