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 =)