Il get non estrae il delimitatore dalla stream.
In pratica il primo get va, ma poi i successivi tirano fuori solo il nulla. Devi fare così:
Ora funzionerà. Ciaocodice:#include <iostream> #include <fstream> #include <string> using namespace std; struct persona{ string nome; string cognome; string data_nascita; }; ifstream in; persona database[50]; int apri() { char nome[50]; char cognome[50]; char data[10]; int k = 0; in.open("persone.txt"); if(in.fail()) { cout<<"Errore nell'apertura archivio"<<endl; } else { while(!in.eof()) { in.get(nome, 50); in.ignore(); in.get(cognome, 50); in.ignore(); in.get(data, 50); in.ignore(); database[k].nome = nome; database[k].cognome = cognome; database[k].data_nascita = data; k++; } } in.close(); return k; } int main() { int n_persone; n_persone = apri(); for(int i = 0; i < n_persone; i++) { cout<<"Nome: "<<database[i].nome<<endl; cout<<"Cognome: "<<database[i].cognome<<endl; cout<<"Data di Nascita: "<<database[i].data_nascita<<endl; } return 0; }![]()

Rispondi quotando