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.