次のような形式のデータを含む単純なCSVファイルを解析しようとしています。
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);
問題は、これは非常に遅く(データファイルあたり100万行を超える)、少しエレガントではないように思われることです。標準ライブラリを使用するより高速なアプローチはありますか、それともstdio関数を使用する必要がありますか?このコードブロック全体が単一のfscanf呼び出しに還元されるように私には思えます。
前もって感謝します!