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ì:
codice:
#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;
}
Ora funzionerà. Ciao