读取csv文件并将值存储在c ++中

时间:2015-05-14 19:15:14

标签: c++ csv

我有一个带有模式的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;
}

2 个答案:

答案 0 :(得分:1)

对于一行中的最后一个字段,您应该使用

getline(csvfile, line);
v[i].setId(line);

而不是

getline(csvfile, line, ',');
v[i].setId(line);

因为对于最后一个字段,您不想在下一个逗号之前读取,直到该行结束。

答案 1 :(得分:0)

,不会将一个记录的ID与下一个记录的名字分开,因此您不能将其用作该列的分隔符。

此外,您需要限制可以读取的记录数,否则如果文件记录太多,则可能会超出v