我正在尝试解析一个简单的 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 调用。
提前致谢!