以下是我打电话的功能:
bool getPlayer(int& jerseyNumber, string& firstName, string& lastName, int& minutesPlayed){
infile >> jerseyNumber;
assert(!infile.fail());
infile >> firstName;
assert(!infile.fail());
infile >> lastName;
assert(!infile.fail());
infile >> minutesPlayed;
assert(!infile.fail());
//set values
return true;
}
void getShooting(int& fga, int& fgm, int& tpa, int& tpm, int& fta, int& ftm){
infile >> fga;
assert(!infile.fail()); //check if it failed, and abort.
infile >> fgm;
assert(!infile.fail());
infile >> tpa;
assert(!infile.fail());
infile >> tpm;
assert(!infile.fail());
infile >> fta;
assert(!infile.fail());
infile >> ftm;
assert(!infile.fail());
return;
}
我的主要功能是以这种方式调用它们:
infile.open("lab3.dat");
fout.open("output.txt");
for (int i = 0; i < SIZE; i++){
getPlayer(jersNums[i], firstNames[i], lastNames[i], totalMinutes[i]);
getShooting(fgas[i], fgms[i], tpas[i], tpms[i], ftas[i], ftms[i]);
}
infile.close();fout.close();
getShooting函数断言在infile >> fta;
行之后立即失败。
我不知道为什么。 lab3.dat的结构如下(每个数字是不同的数据点):
99 George Mikan 379 179 72 0 0 81 62 58 86 0 0 19 0 42
这不一定是我想要的方式,但这是计算机科学任务,所以我必须这样做。这个断言失败有什么明显的原因吗?