我試圖解析一個簡單的CSV文件中,如在格式數據:快速,簡單++ CSV解析用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
所以,一個很簡單的固定格式文件。我將這些數據的每一列存儲到一個STL向量中。因此,我試圖保持使用標準庫中的C++的方式,一個循環內我的實現看起來是這樣的:
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);
的問題是,這是極其緩慢(有每個數據超過1萬行文件),在我看來似乎有點不雅。使用標準庫有更快的方法,還是應該使用stdio函數?在我看來,整個代碼塊會減少到單個fscanf調用。
在此先感謝!
以下問題的重複:http://stackoverflow.com/questions/1120140/csv-parser-in-c –
ÇCSV解析器:http://sourceforge.net/projects/cccsvparser C CSV編寫器:http://sourceforge.net/projects/cccsvwriter – SomethingSomething