Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - chihue

#1
Tengo un vecor donde se guardan los diferentes datos de los clientes:

struct cliente{
int identificador;
string c;
string nombre;
string direccion;
string correo;
string ciudad;
};
const int MAXClientes = 1000;
typedef cliente VecClientes [MAXClientes];

Y una función donde llena los datos desde el archivo clientes
void FncLeerClientesFich(ifstream &f, VecClientes v, int &tam){
string id;
v.clear();
tam=0;
while (!f.eof()){
getline (f,id);
v[tam].identificador = atoi(id.c_str());
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++;
}

}


El problema que me da error en la función clear me sale: [Error] request for member 'clear' in 'v', which is of pointer type 'cliente*' (maybe you meant to use '->' ?)

Como seria para eliminar el vector?
#2
Como se pueden eliminar todos los elementos guardados en un vecor. Tengo una función que lee todos los elementos y cada cambo quiero que vuelva a guardad a todos los elementos. Lo que he echo es inicializar siempre a 0 que empieza a leeer un fichero el problema es que si en el archivo hay 5 datpos que guardar en un vector pero el vector tenia guardado 6 datos hay uno que esta ai siempre.
Lo que quiero es saber como antes de leer un vector se vacie entero. he encontrado la funcion: "v.erase (v.begin(),v.begin()+tam);   " pero me sale un error.

Aqui mi codigo:
void FncLeerClientesFich(ifstream &f,VecClientes v, int &tam){
string id;
v.erase (v.begin(),v.begin()+tam);
tam=0;
while (!f.eof()){
getline (f,id);
v[tam].identificador = atoi(id.c_str());
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++;
}

}
#3
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?
#4
Programación C/C++ / De fichero a Vector
22 Diciembre 2014, 11:56 AM
Buenas tengo un vector y su estructura definido:

struct CIF{
int num;
char letra;
};

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


y esta es mi funcion para leeerlos y psarlos a vector pero no me lo reconce


void FncLeerClientesFich(ifstream &f,VecClientes v, int &tam){
    int i = 0;
    string n;
int l = 0;
    while (!f.eof()) {
    getline(f,n);
        l++;
    }
    tam = l / 6;
    for (i=0; i<tam; i++){
    f >> v[i].identificador;
    f >> v[i].c.num >> v[i].c.letra;
    f >> v[i].nombre;
    f >> v[i].direccion;
    f >> v[i].correo;
    f >> v[i].ciudad;
}
}


El codigo que tiene que leer tiene esta estructura:
1012
24532333 X
La taberna vasca
Avda. Pio XII
taberna.vasca@hotmail.com
Valencia
1230
22345123 P
Cafes Valiente
Avda. Campanar
cafes.valiente@hotmail.com
Valencia
1455
20234561 T
Bier Winkeln
Avda. Campanar
Bier.Winklen@hotmail.com
Valencia
1875
12356355 R
Tapioca. Comidad para llevar.
Avda. Tres Forques
Tapioca@hotmail.com
Valencia