2017-12-02 7 views
0

에 넣고이 lib를 csv 구문 분석 용 https://github.com/ben-strasser/fast-cpp-csv-parser으로 찾았습니다. 데이터를 2 차원 배열로 가져 오려고합니다.C++ fast-cpp-csv-parser를

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]); 
    } 
}  

}

이이 작업을 수행합니다 lib 디렉토리가 GitHub의에 제시된 예에서가는 특정 방식으로

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

에 구축 될 때, 나는 유용성에 문제가, 내가 함께했다 , 5 개의 열이있는 4 개의 행을 통과하며, 예를 들어 모든 열마다 변수를 제시해야했습니다. 수천 개의 열을 가져 오도록 코드를 수정하는 방법은 무엇입니까? csv를 2D 배열로 처리하는 더 좋고/더 쉬운 방법이 있습니까? 내 목표는 속도이고, 나는 csv 입력의 정확한 형식화, 라인 수 및 열 수를 알고 있으므로 수표가 필요하지 않습니다.

답변

0

입력 한 CSV 파일에 수천 개의 열이 있다고 가정 해보십시오. 링크 된 라이브러리는 이러한 유스 케이스를 효과적으로 지원하지 않습니다 (결국 1000 컬럼 CSV 파일이 거의없는 사용자).

간단하고 빠른 방법은 한 번에 한 줄 (std::getline() 또는 fgets())을 읽은 다음 명시 적으로 쉼표로 분리하는 것입니다.