CSV文件读取 C++版本
代码
- //创建结构体,把读取数据可以放入结构体成员中
- struct WAYPOINT{
- double px;
- double py;
- double pz;
- double vx;
- double vy;
- double vz;
- double ax;
- double ay;
- double az;
- };
-
- //读取路径点csv函数
- void read_waypoint_csv(std::string CSV_PATH)
- {
- std::ifstream _csvInput;
- _csvInput.open(CSV_PATH);
- if(!_csvInput){
- std::cout<<"open error! Path = "<< CSV_PATH.c_str() <<std::endl;
- return;
- }
-
- //创建路径点容器
- std::vector<WAYPOINT> waypoint_vec;
- std::string str;
- //读取策略:读取一行数据, 跳过第一行
- size_t line_num = 1;
- //开始循环读取数据
- while(getline(_csvInput, str)){
- WAYPOINT waypt;
- std::istringstream iss(str);
- std::string token;
-
- if(line_num == 1){
- std::cout << iss.str() << std::endl;
- }else{
- getline(iss, token, ',');
- waypt.px = std::stod(token);
- getline(iss, token, ',');
- waypt.py = std::stod(token);
- getline(iss, token, ',');
- waypt.pz = std::stod(token);
-
- getline(iss, token, ',');
- waypt.vx = std::stod(token);
- getline(iss, token, ',');
- waypt.vy = std::stod(token);
- getline(iss, token, ',');
- waypt.vz = std::stod(token);
-
- getline(iss, token, ',');
- waypt.ax = std::stod(token);
- getline(iss, token, ',');
- waypt.ay = std::stod(token);
- getline(iss, token, ',');
- waypt.az = std::stod(token);
-
- waypoint_vec.emplace_back(waypt);
- printf("%5.3f, %5.3f, %5.3f | %5.3f, %5.3f, %5.3f, | %5.3f, %5.3f, %5.3f\n",
- waypt.px, waypt.py, waypt.pz,
- waypt.vx, waypt.vy, waypt.vz,
- waypt.ax, waypt.ay, waypt.az);
- }
- line_num++;
- }
- }
-