I have a problem with stl and class strem for I/O

Practically I must create a phonebook that must add new contact on the phonebook,sends, receives call and messages. This information must be written on the file txt. The user can choose see the list of the sends, receives call and messages and see who has colled, the duration of the call and the date and time that are taken by the operating system. My problem is print on screen the contents of files such as files of incoming calls scrolling the file. I have tried to do so it is case 7 of the switch. But if I try to enter a new name and go back to the menu and try to relate the call list, the latter is not what it should be. Please please do not help me I can go on.
This is my code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
int main()
{
    int scelta,maxNum;
    char ritorno;
    Rubrica r;
    Chiamata c;
    Messaggio s;
    fstream rubrica;
    char * cstr;
    bool trovato = false;
    fstream chiamateEffettuate,chiamateRicevute,smsRicevuti,smsInviati;
    string line;
    chiamateEffettuate.open("ChiamateEffetuate.txt");
    chiamateRicevute.open("ChiamateRicevute.txt");
    smsRicevuti.open("SmsRicevuti.txt");
    smsInviati.open("SmsInviati.txt");
    rubrica.open("Rubrica.txt");
    //Variabili per la data
    int* data = new int[3];
    data = getData();
    int giorno = data[0];
    int mese = data[1]+1;
    int anno = data[2]+1900;
    int *ora=new int[2];
    ora=getOra();
    int h=ora[0];
    int m=ora[1];
    map<string,string> rubricaTelefonica;
    map<string,string>::iterator it;
    list<Chiamata>chiamateEff;
    list<Chiamata>chiamateRic;
    list<Messaggio>smsInv;
    list<Messaggio>smsRic;
    list<Chiamata>::iterator ce;
    list<Messaggio>::iterator si;
    vector<char *> info;
    vector<char *>::iterator informazione;
    vector<string> vettoreNumeri;
    do{ system("CLS");        cout << "\t\t\t\t**Rubrica**" << endl;        cout<<"1.Aggiungi contatto"<<endl;    cout<<"2.Effettua Chiamata"<<endl;
cout<<"3.Ricevi Chiamata"<<endl;        cout<<"4.Manda Sms"<<endl;        cout<<"5.Ricevi Sms"<<endl;        cout<<"6.Controlla Rubrica"<<endl;        cout<<"7.Controlla chiamate effettuate"<<endl; cout<<"8.Controlla chiamate ricvute"<<endl;        cout<<"9.Controlla sms ricevuti"<<endl;
cout<<"10.Controlla sms inviati"<<endl;        cout<<"11.Esci"<<endl;
        cin>>scelta;
        switch(scelta){
            case 1:
                system("CLS");
                cout<<"\t\t\t**Aggiungi contatto**"<<endl<<endl;
                cout<<"Nome: ";
                cin>>r.nome;
                do{
                    cout<<endl<<"Numero di telefono: ";
                    cin>>r.numero;
                    maxNum=r.controlloNumero();
                }while(maxNum>10 || maxNum<10);
                r.aggiungiNelFile();
                rubricaTelefonica[r.nome]=r.numero;
                cout<<"Vuoi tornare al menu'? y/n";
                cin>>ritorno;
                break;
            case 2:
                system("CLS");
                cout<<"\t\t\t**Effettua Chiamata**"<<endl<<endl;
                do{
                    cout<<"Inserisci il numero da chiamare: ";
                    cin>>c.numero;
                    maxNum=c.controlloNumero();
                }while(maxNum>10 || maxNum<10);
                cout<<endl<<"Inserisci la durata della chiamata(in secondi): ";
                cin>>c.durata;
cout<<endl<<"La chiamata e' stata effettuata il "<<giorno << "/" << mese << "/"<< anno << " alle ore "<<h<<":"<<m<<endl;
                c.giorno=giorno;
                c.mese=mese;
                c.anno=anno;
                c.ora=h;
                c.minuti=m;
                c.aggiungiChiamataEffettuata();
                cout<<"Vuoi tornare al menu'? y/n";
                cin>>ritorno;
                break;
            case 7:
                system("CLS");
                cout<<"\t\t\t**Chiamate Effettuate**"<<endl<<endl;
                while(!rubrica.eof()){
                    rubrica>>r.nome;
                    rubrica>>r.numero;
                    rubricaTelefonica[r.nome]=r.numero;
                }
                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;
                            info.push_back(p);
                            p = strtok(NULL,"\t\t/:");
                      }
                }
                for(int f=0;f!=info.size();f=f+7){
                     c.numero=info[f];
                     c.durata=info[f+1];
                     c.giorno=atoi(info[f+2]);
                     c.mese=atoi(info[f+3]);
                     c.anno=atoi(info[f+4]);
                     c.ora=atoi(info[f+5]);
                     c.minuti=atoi(info[f+6]);;
                     chiamateEff.push_back(c);
                    }
                 for(ce=chiamateEff.begin();ce!=chiamateEff.end();ce++){
                        trovato=false;
   for(it=rubricaTelefonica.begin();it!=rubricaTelefonica.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;
                 cout<<endl<<"Vuoi tornare al menu'? y/n";
                cin>>ritorno;
                break;
          
}


There are the other case but don't enter in the space.
Topic archived. No new replies allowed.