Originariamente inviato da MisterBean
Come mai usi le dichiarazioni
codice:
string titolo[25];
string cantante[25];
? Quelle non sono stringhe, sono array di stringhe (di 25 elementi ciascuno).
Comunque posta anche il codice per leggere e scrivere su file.
Utilizzo l'array di stringhe perchè il programma deve fare questo:
creo un array di record e ogni record deve contenere queste informazioni:
-nome del cd (e quindi una stringa)
-numero (un int)
-N tracce (dove N="numero", utilizzo l'array di stringhe perchè ho bisogno che in ogni record siano salvate gli N nome diversi delle N tracce diverse)
-N artisti (stessa cosa delle "N tracce")
Questo è il codice della funzione che salva il file:
codice:
void salva_file(record cd[], int&riemp)
{
     fstream scrittura;
     scrittura.open("database.txt",ios::out);
     for(int i=0;i<riemp;i++){
             scrittura<<cd[i].nome_cd <<endl;
             scrittura<<cd[i].numero <<endl;
             for(int j=0;j<cd[i].numero;j++){
                     scrittura<<cd[i].canzone[j] <<cd[i].artista[j];
             }
             scrittura<<endl;
     }
     scrittura.close();
     cout<<"scrittura completata";
}
Questo invece è il codice della funzione che legge da file:
codice:
void carica_file(record cd[], int&riemp)
{
     riemp=0;
     fstream lettura;
     lettura.open("database.txt",ios::in);
     while(!lettura.eof()){
                  getline(lettura,cd[riemp].nome_cd);
                 lettura>>cd[riemp].numero;
                 for(int i=0;i<cd[riemp].numero;i++){
                         getline(lettura,cd[riemp].canzone[i]);
                         getline(lettura,cd[riemp].artista[i]);
                 }
                 }
                 cout<<controllo;
     
     riemp++;
     }
     lettura.close();
     cout<<"lettura completata";
}
"riemp" è il riempimento del vettore di record che inizializzo in fase di lettura, ma che poi gestirò in maniera diversa quando riuscirò a capire dove sbaglio! XD
ps "salva_file" credo sia giusta perchè il file che mi scrive sembra tutto ok...
vi ringrazio per la pazienza =)