[c++] Problema con la lectura de ficheros

Iniciado por chihue, 28 Diciembre 2014, 11:21 AM

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

chihue

Tengo un archivo llamado "clientes.txt" donde tengo almacenada cierta info. Tengo que leerla a un vector y he echo un programa tal que así:


struct cliente{
int identificador;
string c;
string nombre;
string direccion;
string correo;
string ciudad;
};

const int MaxClientes = 1000;
typedef cliente VecClientes [MaxClientes];

int main (){
int tam=0, i;
ifstream f;
VecClientes v;
f.open("clientes.txt");
if (f.fail())
cout << "Error abriendo fichero."<< endl;
else {
while (!f.eof()){
f >> v[tam].identificador;
getline (f,v[tam].c);
getline (f,v[tam].nombre);
getline (f,v[tam].direccion);
getline (f,v[tam].correo);
getline (f,v[tam].ciudad);
tam++;
}
f.close();
}

for (i=0; i<tam; i++){
cout <<"Identificador: "<< v[i].identificador<<endl;
cout <<"NIF: "<<v[i].c<<endl;
cout <<"Nombre: "<<v[i].nombre<<endl;
cout <<"Correo: "<<v[i].correo<<endl;
cout <<"Direccion: "<<v[i].direccion<<endl;
cout <<"Ciudad: "<<v[i].ciudad<<endl;
}

system ("PAUSE");
return ;
}


Pero esto no ejecuta nada, si pngo que todo sean strings si me los lee con el getline porque si es un entero no me lo le con ">>".
Alguna solucion?

SrCooper

Podrías leerlo como un string y luego convertirlo a un entero de la siguiente manera:

Código (cpp) [Seleccionar]
std::string id_str;

getline(f, id_str);

v[tam].identificador = std::stoi(id_str);


Para poder usar std::stoi() tienes que compilar en modo C++11, lo cual en mi opinión es recomendable siempre.

Un saludo

PD: Por cierto, no es recomendable hacer llamadas al system al final del programa. Una llamada a std::cin.get() será mucho menos costosa y hará prácticamente lo mismo.

PD2: Además, no te olvides de devolver 0 al final del main, para indicarle al programa que todo ha salido correctamente.