Análisis CSV rápido y simple en C ++

Estoy tratando de analizar un archivo CSV simple, con datos en un formato como:

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 intentado mantener la forma de C ++ utilizando la biblioteca estándar, y mi implementación dentro de un bucle es algo así 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 archivo de datos) y me parece un poco poco elegante. ¿Existe un enfoque más rápido con la biblioteca estándar o solo debo usar las funciones stdio? Me parece que este bloque de código completo se reduciría a una sola llamada fscanf.

¡Gracias por adelantado!

Respuestas a la pregunta(3)

Su respuesta a la pregunta