Estoy tratando de analizar un archivo CSV simple, con los datos en un formato como:rápido, simple CSV de análisis en C++
20.5,20.5,20.5,0.794145,4.05286,0.792519,1
20.5,30.5,20.5,0.753669,3.91888,0.749897,1
20.5,40.5,20.5,0.701055,3.80348,0.695326,1
Por lo tanto, un archivo de formato muy simple y fijo. Estoy almacenando cada columna de estos datos en un vector STL. Como tal He tratado de mantenerse la forma en C++ usando la librería estándar, y mi aplicación dentro de un bucle se ve algo como:
string field;
getline(file,line);
stringstream ssline(line);
getline(ssline, field, ',');
stringstream fs1(field);
fs1 >> cent_x.at(n);
getline(ssline, field, ',');
stringstream fs2(field);
fs2 >> cent_y.at(n);
getline(ssline, field, ',');
stringstream fs3(field);
fs3 >> cent_z.at(n);
getline(ssline, field, ',');
stringstream fs4(field);
fs4 >> u.at(n);
getline(ssline, field, ',');
stringstream fs5(field);
fs5 >> v.at(n);
getline(ssline, field, ',');
stringstream fs6(field);
fs6 >> w.at(n);
El problema es que esto es extremadamente lento (hay más de 1 millón de filas por los datos archivo), y me parece un poco poco elegante. ¿Hay un enfoque más rápido usando la biblioteca estándar, o debería simplemente usar las funciones de stdio? Me parece que todo este bloque de código se reduciría a una única llamada fscanf.
¡Gracias de antemano!
duplicado de la siguiente pregunta: http://stackoverflow.com/questions/1120140/csv-parser-in-c –
C CSV Analizador: http://sourceforge.net/projects/cccsvparser C CSV Writer: http://sourceforge.net/projects/cccsvwriter – SomethingSomething