c ++ fast-cpp-csv-parser到数组中

时间:2017-12-02 11:02:38

标签: c++ arrays csv parsing

发现这个lib用于csv解析https://github.com/ben-strasser/fast-cpp-csv-parser,我试图将数据转换为2d数组。我有一个可用性问题,因为lib是以特定方式构建的

 bool read_row(ColType1&col1, ColType2&col2, ...);

从github中提供的示例开始,我提出了:

main() {

double** data = new double*[5];
for (int i = 0; i < 4; ++i) {
    data[i] = new double[5];
}

io::CSVReader<5> in("c:/code/test.txt");
//in.read_header(io::ignore_extra_column, "vendor", "size", "speed");
double a; double b; double c; double d; double e;
int n = 0;
while (in.read_row(a, b, c, d, e)) {
    printf("time elapse: %f\n", c); 

    data[n][0] = a;
    data[n][1] = b;
    data[n][2] = c;
    data[n][3] = d;
    data[n][4] = e;

    n++;

}


for (int i = 0; i < 4; i++){ 
    for (int j = 0; j < 5; j++) {
        printf("data %f\n", data[i][j]);
    }
}       

}

这可以完成这项工作,通过4行5列,例如我必须为每列提供一个变量。如何修改代码以获取数千列?是否有更好/更简单的方法将csv处理成2d数组?我的目标是速度,我知道确切的csv输入格式,行数和列数,所以不需要检查。

1 个答案:

答案 0 :(得分:1)

您说输入的CSV文件有数千列。您链接的库不能有效地支持这样的用例(毕竟,几乎没有人拥有千列CSV文件)。

一个简单且仍然很快的方法是一次读取一行(std::getline()fgets()),然后明确地用逗号分割。