PDA

View Full Version : [C++] Aiuto input da file


supernovae
10-09-2008, 17:18
ciao a tutti
ho un problema con una funzione che legge e immagazzina in un vector dati presi in input da un generico txt

void ReadEmploye(const string& filepath, vector<Employ> &employs)
{
fstream data;
data.open(filepath.c_str(),ios::in);
string str;
while(data)
{
getline(data,str);
int pos=str.find_first_of(",",0);
string FName = str.substr(0,pos);
int pos1 = str.find_first_of(",",pos+1);
string LName = str.substr(pos+1,pos1-1-pos);
string sal = str.substr(pos1+1,str.size()-pos1);
double salary = atof(sal.c_str());
Employ obj(FName, LName, salary);
employs.push_back(obj);
}
data.close();
}

Questa č la funzione che ho implementato, fa tutto perfettamente solo che se nel testo di input inserisco 3 campi quando la funzione immagazzina sempre un dato i pių(ripete il terzo due volte) e quando vado a stampare tutto a schermo mi da una cosa del genere:
firstName1 LastName1 salary1
firstName2 LastName2 salary2
firstName3 LastName3 salary3
firstName3 LastName3 salary3

:confused: ho controllato con il debugger che effettivamente il ciclo di lettura viene sempre compiuto una volta in pių di quanto dovrebbe fare

Suggerimenti??????

cionci
11-09-2008, 01:59
L'eof viene generato solo dopo la prima lettura fallita.
Quindi metti un controllo sul failbit dopo la getline.
if(data.fail())
break;

supernovae
11-09-2008, 08:11
grazie mille!!!!:D ora funziona tutto a meraviglia;)