C 快速-CPP-CSV-Parser进入数组

c++ fast-cpp-csv-parser into array

本文关键字:数组 -CPP-CSV-Parser 快速      更新时间:2023-10-16

找到了用于CSV解析的LIB 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: %fn", 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 %fn", data[i][j]);
    }
}       

}

这可以完成这项工作,经过4行,带有5列,例如,我必须为每个列提供一个变量。如何修改代码以获取数千列?是否有更好/更轻松地将CSV处理为2D数组的方法?我的目标是速度,我知道CSV输入,数字和列的确切构建,因此不需要检查。

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

一种简单而快速的方法是一次读取一行(std::getline()fgets()),然后明确地通过逗号分开。