Sto provando a leggere da file un insieme di dati, in particolare ho un file .dat con il seguente contenuto :
1 //int
cazzabubbolo //string
12 //int
123.56 //float
nota1 //string
2
nullino
12
123.56
nota2
questo è il main
int main() {
oggetto x[100];
int id;
string nome;
int quanti;
float costo;
string nota;
fstream f;
f.open("file.dat",ios::in);
int i=0;
while(!f.eof()){
f>>id;
f>>nome;
f>>quanti;
f>>costo;
f>>nota;
x[i].setId(id);
x[i].setName(nome);
x[i].setQuanti(quanti);
x[i].setCosto(costo);
x[i].setNota(nota);
i++;
}
for (int j=0;j<i;j++){
x[j].print();
cout<<"|----------|"<<endl;
}
f.close();
return 0;
}
fin qui tt ok, ma se nel file cambio i campi corrispondenti alle string con due parole invece di una il programma termina.
quindi se modifico il file.dat così:
1
cazzabubbolo elettrico //<--------------------------
12
123.56
nota1
2
nullino
12
123.56
nota2
ho l'errore, probabilmente è causato dal fatto che la parola "elettrico" finisce nell'int di sotto, ma come posso ovviare a questa situazione?
ossia come leggo intere frasi da file e le inserisco in una string?