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 ' –