3
我正在使用Ben strasser C++快速csv分析器:https://github.com/ben-strasser/fast-cpp-csv-parser。它采用了可变参数模板通过列值回while循环处理CSV数据:“解包”数组以调用具有可变参数模板的函数
io::CSVReader<2> in(csv_filename);
double x, y;
while(in.read_row(x,y)) {
//code with x and y
}
这就要求在CSVReader类以下功能:
template<class ...ColType>
bool read_row(ColType& ...cols){
//snip
}
这工作正常,我有我的x和y值。但是,我想扩大这个使用任意尺寸。这意味着我的数据有一个(已知的)我需要阅读的列数。我想用这样的东西:
io::CSVReader<known_dimension> in(csvfname);
double data[known_dimension];
while(in.read_row(data)) {
//code with data[0],data[1],...,data[known_number]
}
但是,这是无效的语法。我需要将双打数组“解开”为指向我双打的单独参数。我想在不对快速csv解析器进行修改的情况下执行此操作。
虽然这是一个很好的答案,'的std :: integer_sequence'是从C++ 14 ,问题被标记为C++ 11。 – SergeyA
@SergeyA - true - 我为C++添加了这个实现11 – PiotrNycz
* *几乎可以工作。我收到以下错误消息:没有匹配函数调用'read_row(io :: CSVReader <2u>&,double [2])'。注意:候选是:template void read_row(io :: CSVReader &,T *)。模板参数推导/替换失败:不匹配类型long unsigned int和'#'ínteger_cst'不受dump_type支持#'。 'io :: CSVReader <2u>'不是来源于'io :: CSVReader ' –