我想從txt文件中讀取信息,但有些東西沒有解決。我需要讀取每行並將其保存在屬於類Bilhete的變量中。閱讀由換行符和逗號分隔的txt文件
Alexandre
20/12/2015
1,2,3,4
Luis
30/10/1990
3,4,5,6
這是我的txt。
這代表票(bilhete葡萄牙): - 所有者 的名字 - expirity日期 - 我有機會獲得比賽。每個數字代表比賽的編號。在我的項目中有一個競賽類,但我不認爲這是非常重要的這個問題
void Campeonato::readFileBilhetes(string filename) {
ifstream ficheiro_leitura(filename.c_str());
vector<Prova*> vecprovas = calendario->getProvas();
vector <int> indices; //vector with competitions id
if(!ficheiro_leitura)
throw ErroNoFicheiro(filename);
else{
string dono, data, provasNoBilhete, vendido; //owner, date, competitions in the ticket,
while (!ficheiro_leitura.eof()){
getline(ficheiro_leitura, dono);
getline(ficheiro_leitura, data);
getline(ficheiro_leitura, provasNoBilhete);
stringstream dataSs;
date d;
dataSs << data;
int dia, mes, ano; //day, month, //year
char tmp;
dataSs >> dia >> tmp >> mes >> tmp >> ano;
if(dia < 1 || dia > 31|| mes < 1 || mes > 12 || ano < 1 || (dia > 28 && mes == 2) || (dia > 30 && mes == 4) || (dia > 30 && mes == 6) || (dia > 30 && mes == 9) || (dia > 30 && mes == 11)){
cout << "Data invalida!";
}
else{
d.dia = dia; //day
d.mes = mes; //month
d.ano = ano; //year
}
string s1 = "";
string s2= "";
stringstream provasS;
int i = 0;
while (provasNoBilhete[i] != '\n' && provasNoBilhete[i] != '\0'){
if(provasNoBilhete[i] == ','){
int indice;
provasS.clear();
provasS.str("");
provasS.str(s2);
provasS >> indice;
indices.push_back(indice);
}
else
provasS << provasNoBilhete[i];
++i;
Bilhete *bi1 = new Bilhete(d, dono, indices);
inserirBilhete(*bi1); //insert
}
}
}
}
如何正確保存這些值?
問候
你能澄清你遇到的問題嗎? – badfilms
[你不應該使用while(!ifstream.eof()'。](http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong),這可能是你問題的根源。 – Beta