我只是试图读取CSV文件并在终端上打印它,但是我认为getLine()函数不能解析行尾字符。我以为是因为我正在读取的文件是在Windows上创建的,而我却在Linux上运行脚本。为了验证该理论,我在Linux上创建了一个新的CSV文件,但存在相同的问题。

CSV档案:


julio,tito,monroy
felipe,aguilar,jowell



readCsv.open("test.csv", ios::in);
if(readCsv.is_open()){
    string time;
    string in;
    string out;
    int count = 1;

    while(!readCsv.eof()){
        getline(readCsv, time, ',');
        getline(readCsv, in, ',');
        getline(readCsv, out, ',');

        printf("%d : %s %s %s", count, time.c_str(), in.c_str(), out.c_str());

        count++;
    }

} else {
    printf("There was an error when trying to open the csv file. \n");
}


我究竟做错了什么?

最佳答案

像这样

while (getline(readCsv, time, ',') &&
        getline(readCsv, in, ',') &&
        getline(readCsv, out))
{


您的版本有两个问题。首先,您的第三列以行尾而不是以逗号结尾,因此getline(readCsv, out, ',')是错误的。其次,您对eof的工作方式的理解不正确,请参见here

10-08 12:51