我有一个带有模式的csv文件:
firstname, lastname, id
angelina, jolie, 247
... and so on...
我想将值存储在Student
类中,但问题是它取第一行的最后一个单词并与第二行的第一个单词(idangelina
)连接这个名单有5000名学生存放在Student
数组中,我不知道如何将它们分开。
功能如下:
int readFromCsv(string filePath, Student v[]){
string line;
ifstream csvfile;
csvfile.open(filePath);
int i = 0;
while ( !csvfile.eof() ){//loops until the end of the file
getline(csvfile, line, ',');//read a string until the next comma
v[i].setFirstName(line); //set each student
getline(csvfile, line, ',');
v[i].setLastName(line);
getline(csvfile, line, ',');
v[i].setId(line);
i += 1;
}
csvfile.close();
return i;
}
答案 0 :(得分:1)
对于一行中的最后一个字段,您应该使用
getline(csvfile, line);
v[i].setId(line);
而不是
getline(csvfile, line, ',');
v[i].setId(line);
因为对于最后一个字段,您不想在下一个逗号之前读取,直到该行结束。
答案 1 :(得分:0)
,
不会将一个记录的ID与下一个记录的名字分开,因此您不能将其用作该列的分隔符。
此外,您需要限制可以读取的记录数,否则如果文件记录太多,则可能会超出v
。