读文件,使用正则表达式的方法解析文件,生成数据,存到vector中。
#include <boost/regex.hpp>
#include <string>
bool fileToxy(void)
{
ifstream get_odom_file;
get_odom_file.open(ODOM_FILE);
if(get_odom_file.is_open()){
ROS_ERROR("start file to xy\n");
// vector<double> lane_point((istream_iterator<double>(get_odom_file)), istream_iterator<double>());
vector<double> temp_line;
vector<vector<double>> vec_point;
// int vec_point_size = vec_point.size();
string pointStr;
boost::regex pat_regex("([0-9][.][0-9]+)");
while(getline(get_odom_file, pointStr)){
//表达式匹配,匹配一行中所有满足条件的字符
boost::sregex_iterator it(pointStr.begin(), pointStr.end(), pat_regex);
boost::sregex_iterator end_it;//默认构造器会生成一个结束迭代器
for (; it != end_it; ++it) {
//ROS_ERROR("xy : %s\n",it->str()); //输出匹配成功的数据
temp_line.push_back(stod(it->str())); //将数据转化为int型并存入一维vector中
}
vec_point.push_back(temp_line); //保存所有数据
temp_line.clear();
}
//输出存入vector后的数据
// for(auto i : vec_point) {
// for(auto j : i) {
// //cout << j << " ";
// ROS_ERROR("xy : %lf",j);
// }
// ROS_ERROR("\n");
// }
// vec_point_size = vec_point.size();
// ROS_ERROR("vec_point_size = %d ",vec_point_size);
get_odom_file.close();
}
else{
ROS_ERROR("fail to open the file\n");
}
return 0;
}