Próbuję analizować prosty plik CSV z danymi w formacie takim jak:szybki, prosty CSV podczas analizowania w 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
tak, to bardzo prosty i ustalonym formacie pliku. Przechowuję każdą kolumnę tych danych w wektorze STL. Jako takie Próbowałem zawiesić C drogę ++ z wykorzystaniem biblioteki standardowej, a moja realizacja wewnątrz pętli wygląda mniej więcej tak:
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);
Problemem jest to, to jest bardzo powolny (istnieje ponad 1 milion wierszy na danych plik) i wydaje mi się nieco nieelegancki. Czy istnieje szybsze podejście przy użyciu standardowej biblioteki, czy powinienem po prostu użyć funkcji stdio? Wydaje mi się, że cały blok kodu zmniejszyłby się do pojedynczego wywołania fscanf.
Z góry dziękuję!
duplikat następującym pytaniem: http://stackoverflow.com/questions/1120140/csv-parser-in-c –
C CSV Parser: http://sourceforge.net/projects/cccsvparser C CSV Writer: http://sourceforge.net/projects/cccsvwriter – SomethingSomething