Devo creare una rubrica telefonica utilizzando la standard template library.
Se simulo una chiamata e poi torno al menù quando vado a far visualizzare la lista il compilatore salta la lettura del file e quindi non mi stamoa i numeri di telefono delle chiamate.
Non riesco a capire dove sbaglio mi potete aiutare? grazie
Questo il mio codice:
Se simulo una chiamata e poi torno al menù quando vado a far visualizzare la lista il compilatore salta la lettura del file e quindi non mi stamoa i numeri di telefono delle chiamate.
Non riesco a capire dove sbaglio mi potete aiutare? grazie
Questo il mio codice:
Codice:
chiamateEff.clear();
system("CLS");
chiamateEffettuate.open("ChiamateEffetuate.txt");
cout<<"\t\tChiamate effettuate"<<endl<<endl;
while(!chiamateEffettuate.eof()){
getline(chiamateEffettuate,line);
cstr = new char [line.length()+1];
strcpy (cstr, line.c_str());
char * p = strtok (cstr,"\t\t/:");
while (p!=NULL){
// cout << p << endl;
infoChiamateEff.push_back(p);
p = strtok(NULL,"\t\t/:");
}
}
for(int f=0;f!=infoChiamateEff.size();f=f+7){
c.numero=infoChiamateEff[f];
c.durata=infoChiamateEff[f+1];
c.giorno=atoi(infoChiamateEff[f+2]);
c.mese=atoi(infoChiamateEff[f+3]);
c.anno=atoi(infoChiamateEff[f+4]);
c.ora=atoi(infoChiamateEff[f+5]);
c.minuti=atoi(infoChiamateEff[f+6]);;
chiamateEff.push_back(c);
}
while(!rubrica.eof()){
//Si legge da file il numero e il nome del contatto e si inserisce nella classe
rubrica>>r.nome;
rubrica>>r.numero;
rubricaTelefonica[r.nome]=r.numero;
}
for(ce=chiamateEff.begin();ce!=chiamateEff.end();c e++){
trovato=false;
for(it=rubricaTelefonica.begin();it!=rubricaTelefo nica.end();it++){
if(ce->numero==it->second){
cout<< it->first<<" "<<ce->durata<<" "<<ce->giorno<<"/"<<ce->mese<<"/"<<ce->anno<<" "<<ce->ora<<":"<<ce->minuti<<endl;
trovato=true;
break;
}
}
if(!trovato){
cout<< ce->numero<<"(Sconosciuto)"<<" "<<ce->durata<<" "<<ce->giorno<<"/"<<ce->mese<<"/"<<ce->anno<<" "<<ce->ora<<":"<<ce->minuti<<endl;
}
}
delete[] cstr;
chiamateEffettuate.close();
cout<<endl<<"Vuoi tornare al menu'? y/n";
cin>>ritorno;
break;