TXT文档格式

航点序号     经度°     纬度°     高度m    速度m/s    悬停时间s       标志字节
1  114.363945   38.056252      20   2    5     1
2  114.363697   38.055994      20   2    5     1
3  114.363974   38.055745      20   2    5     1
4  114.363215   38.055765      20   2    5     1
5  114.363573   38.056425      10   2    5     3

文档内容分析

每行内容的每个字段之间有的间隔空格,有的间隔TAB键,需要先将TAB键替换为空格,之后每到空格就跳过,从而提取每行的每个字段。

按行读取TXT文档代码

bool ReadTxtByLine(string pathSrc, vector<string> &strBufferVec)
{fstream infile(pathSrc.c_str());if (!infile){cout << "打开文件失败" << endl;exit(1);}cout << "开始读取" << endl;string strLine;while (getline(infile, strLine)){strBufferVec.push_back(strLine);}cout << "文件读取完毕" << endl;infile.close();return true;}

按照符号a分离字符串

void splitStr(vector<string>& buf, string str, const char a)//按照符号a分离字符串。
{buf.clear();for (size_t i = 0; i < sizeof(str); i++){if (str[i] == '\t')str[i] = ' ';}size_t start = 0, index = str.find_first_of(a, 0);while (index != str.npos){if (start != index)buf.push_back(str.substr(start, index - start));start = index + 1;index = str.find_first_of(a, start);}if (!str.substr(start).empty()){buf.push_back(str.substr(start));}
}

字段存储结构体及主函数

struct Route//创建路径结构体
{int Num;double Jing;double Wei;double Gao;int SuDu;int BanJing;int Mark1;int XuanTing;int Mark2;
};
void main()
{vector<string> strBufferVec;ReadTxtByLine("E:\\RouteSave\\test.txt", strBufferVec);vector<string> buf;vector <Route> v_tmp;for (size_t i = 1; i < strBufferVec.size(); i++){splitStr(buf, strBufferVec[i], ' ');Route r;r.Jing = atof(buf[1].c_str());r.Wei = atof(buf[2].c_str());r.Gao = atof(buf[3].c_str());r.SuDu = atof(buf[4].c_str());r.XuanTing = atof(buf[5].c_str());r.Mark1 = atof(buf[6].c_str());v_tmp.push_back(r);}cout << "v_tmp.size():" << v_tmp.size() << endl;;cout << "v_tmp[0].Jing" << setprecision(9) << v_tmp[0].Jing << endl;cout << "v_tmp[1].Jing" << setprecision(9) << v_tmp[1].Jing << endl;cout << "v_tmp[2].Jing" << setprecision(9) << v_tmp[2].Jing << endl;cout << "v_tmp[3].Jing" << setprecision(9) << v_tmp[3].Jing << endl;cout << "v_tmp[4].Jing" << setprecision(9) << v_tmp[4].Jing << endl;UAVCommond routePlanCommond;routePlanCommond.RoutePlan(v_tmp);
}
void UAVCommond::RoutePlan(vector <Route> v_route)
{int num = v_route.size();QByteArray  route_datagram;// = msg.toUtf8();route_datagram.resize(2 + 22 * num);//航点总数route_datagram[0] = (uchar)num;route_datagram[1] = 0x00;for (int i = 0; i < num; i++){//航点1序号route_datagram[2 + i * 22] = (uchar)(i+1);route_datagram[3 + i * 22] = 0x00;//转换进制107.123456//航点1经度long int_JingA = v_route[i].Jing * 10000000;route_datagram[4 + i * 22] = (uchar)(0x000000ff & int_JingA);route_datagram[5 + i * 22] = (uchar)((0x0000ff00 & int_JingA) >> 8);route_datagram[6 + i * 22] = (uchar)((0x00ff0000 & int_JingA) >> 16);route_datagram[7 + i * 22] = (uchar)((0xff000000 & int_JingA) >> 24);//转换进制//航点1纬度long int_WeiA = v_route[i].Wei * 10000000;route_datagram[8 + i * 22] = (uchar)(0x000000ff & int_WeiA);route_datagram[9 + i * 22] = (uchar)((0x0000ff00 & int_WeiA) >> 8);route_datagram[10 + i * 22] = (uchar)((0x00ff0000 & int_WeiA) >> 16);route_datagram[11 + i * 22] = (uchar)((0xff000000 & int_WeiA) >> 24);//转换进制//航点1距地高度long int_GaoA = v_route[i].Gao * 1000;route_datagram[12 + i * 22] = (uchar)(0x000000ff & int_GaoA);route_datagram[13 + i * 22] = (uchar)((0x0000ff00 & int_GaoA) >> 8);route_datagram[14 + i * 22] = (uchar)((0x00ff0000 & int_GaoA) >> 16);route_datagram[15 + i * 22] = (uchar)((0xff000000 & int_GaoA) >> 24);//航点1飞行速度long int_SuDu = v_route[i].SuDu * 100;route_datagram[16 + i * 22] = (uchar)(0x00ff & int_SuDu);route_datagram[17 + i * 22] = (uchar)((0xff00 & int_SuDu) >> 8);//航点1飞行半径route_datagram[18 + i * 22] = 0xC8;route_datagram[19 + i * 22] = 0x00;//航点1标志1long Mark1 = v_route[i].Mark1;route_datagram[20 + i * 22] = (uchar)int_SuDu;//航点1悬停时间long xuanting = v_route[i].XuanTing;route_datagram[21 + i * 22] = (uchar)xuanting;route_datagram[22 + i * 22] = 0x00;//航点1标志2route_datagram[23 + i * 22] = 0x03;}航点1序号//route_datagram[2] = 0x01;//route_datagram[3] = 0x00;转换进制107.123456航点1经度//long int_JingA = JingA * 10000000;//route_datagram[4] = (uchar)(0x000000ff & int_JingA);//route_datagram[5] = (uchar)((0x0000ff00 & int_JingA) >> 8);//route_datagram[6] = (uchar)((0x00ff0000 & int_JingA) >> 16);//route_datagram[7] = (uchar)((0xff000000 & int_JingA) >> 24);转换进制航点1纬度//long int_WeiA = WeiA * 10000000;//route_datagram[8] = (uchar)(0x000000ff & int_WeiA);//route_datagram[9] = (uchar)((0x0000ff00 & int_WeiA) >> 8);//route_datagram[10] = (uchar)((0x00ff0000 & int_WeiA) >> 16);//route_datagram[11] = (uchar)((0xff000000 & int_WeiA) >> 24);转换进制航点1距地高度//long int_GaoA = GaoA * 1000;//route_datagram[12] = (uchar)(0x000000ff & int_GaoA);//route_datagram[13] = (uchar)((0x0000ff00 & int_GaoA) >> 8);//route_datagram[14] = (uchar)((0x00ff0000 & int_GaoA) >> 16);//route_datagram[15] = (uchar)((0xff000000 & int_GaoA) >> 24);航点1飞行速度//route_datagram[16] = 0xB0;//route_datagram[17] = 0x04;航点1飞行半径//route_datagram[18] = 0xC8;//route_datagram[19] = 0x00;航点1标志1//route_datagram[20] = 0x00;航点1悬停时间//route_datagram[21] = 0x0D;//route_datagram[22] = 0x00;航点1标志2//route_datagram[23] = 0x03;依次重复2-23字节,航点序号加1航点2序号//route_datagram[24] = 0x02;//route_datagram[25] = 0x00;转换进制航点2经度//long int_JingB = JingB * 10000000;//route_datagram[26] = (uchar)(0x000000ff & int_JingB);//route_datagram[27] = (uchar)((0x0000ff00 & int_JingB) >> 8);//route_datagram[28] = (uchar)((0x00ff0000 & int_JingB) >> 16);//route_datagram[29] = (uchar)((0xff000000 & int_JingB) >> 24);转换进制航点2纬度//long int_WeiB = WeiB * 10000000;//route_datagram[30] = (uchar)(0x000000ff & int_WeiB);//route_datagram[31] = (uchar)((0x0000ff00 & int_WeiB) >> 8);//route_datagram[32] = (uchar)((0x00ff0000 & int_WeiB) >> 16);//route_datagram[33] = (uchar)((0xff000000 & int_WeiB) >> 24);转换进制航点2距地高度//long int_GaoB = GaoB * 1000;//route_datagram[34] = (uchar)(0x000000ff & int_GaoB);//route_datagram[35] = (uchar)((0x0000ff00 & int_GaoB) >> 8);//route_datagram[36] = (uchar)((0x00ff0000 & int_GaoB) >> 16);//route_datagram[37] = (uchar)((0xff000000 & int_GaoB) >> 24);航点2飞行速度//route_datagram[38] = 0xB0;//route_datagram[39] = 0x04;航点2飞行半径//route_datagram[40] = 0xC8;//route_datagram[41] = 0x00;航点2标志1//route_datagram[42] = 0x00;航点2悬停时间//route_datagram[43] = 0x0D;//route_datagram[44] = 0x00;航点2标志2//route_datagram[45] = 0x03;//qDebug() << warn_datagram;route_udpSocket.writeDatagram(route_datagram, route_groupAddress, route_Port);
}

C++读取TXT文档,分行分段解析,通过UDP组播发送相关推荐

  1. Python读取.txt文档内容/读取text文件内容

    Python读取.txt文档内容/读取text文件内容; 读取txt后缀文件的内容的两种方式,简约易懂,复制粘贴即可食用,节约你宝贵的时间 文档全部数据一次性读取 # -*- coding: UTF- ...

  2. matlab通过变量调用txt文件路径,MATLAB使用load函数读取txt文档

    MATLAB在数据处理方面应用非常广泛.在众多的专业领域里,把各种手段获取的数据存入txt文档中非常常见.如果txt文件中数据为矩阵形式,通常可以采用简单的load命令来读取数据,然后在MATLAB中 ...

  3. 「 C++ MFC 」“读取.txt文档实例”讲解

    一.前言 本博客在MFC工程中,完成了对"读取.txt文档"功能的实战. 二.技术实现 整个程序分为三个过程:开始读文档.应用文档和停止读文档.         1. 开始读文档 ...

  4. javaScript读取txt文档的FSO对象和ADODB.Stream对象

    转自:http://blog.163.com/chaosumin@126/blog/static/86387403201092793610651 在使用JavaScript读取txt文档时,一般使用j ...

  5. C语言 读取txt文档按行读取到新的txt文档

    如下图data.txt,需要把数据按17行读取到自动命名新建的txt文档里: 1-17行     1.txt 18-34行   2.txt -- #include <stdio.h> #i ...

  6. C语言读取txt文档中的数据

    1.说明    txt文档中的数据格式:前后数据用空格隔开:    数据来源:matlab读取彩图的R.G.B三层的像素值,分别存放在三个txt文档中,用C读取到一维数组.    动态申请数组,还是需 ...

  7. PHP如何读取txt文档域名集,并且生成数组/随机显示一个

    最近有朋友反馈我一个问题看我是否可以帮忙解决:需求就是网页需要跳转代码,用PHP写,读取一个域名集合包(也就是TXT文档),里面方着很多域名,让每访问一次随机跳转一个域名,怕是违法应用,没有答应帮忙, ...

  8. C# 读取.txt文档和.docx文档。npoi读取word文档

    1 NuGet包安装npoi 2 安装npoi 3 获取txt文档内容,不需要安装npoi.filePath是相对路径 public static string ReadFileContent(str ...

  9. 利用python读取txt文档

    TXT_PATH='/data/benchmark/jingqu_30wan_1002/bm_files/remove100/result.txt' with open(TXT_PATH, 'r') ...

最新文章

  1. swift集成alamofire的简单封装
  2. 3句话点评2020年看过的那些精彩的电影
  3. 安装软件包的三种方法、rpm包介绍、rpm工具用法、yum工具用法、yum搭建本地仓库...
  4. 如何自定义CSS滚动条的样式?
  5. html制作圆盘时钟,jquery+html5制作超酷的圆盘时钟表
  6. WAS集群系列(5):集群搭建:步骤3:安装IHS软件
  7. 智能优化算法:哈里斯鹰算法-附代码
  8. 01_项目需求与实体分析(servlet+java bean+jsp的商城教程)
  9. Java基础知识点面试手册
  10. vscode安装使用教程
  11. 怎么制作合法有效的电子签名?
  12. android 使用系统下载并更新版本,安卓系统更新升级的种方法
  13. 普通网站的建设和维护费用大概是多少?
  14. 书法特征提取matlab,基于深度学习的软笔书法临摹评价方法与流程
  15. 金融专业本科生毕业论文选题推荐?
  16. 请写代码校验第二代身份证号码有效性。程序接收一个18位的身份证号码和性别,根据以下规则输出号码是有效还是无效。
  17. PackagesNotFoundError Anaconda虚拟环境安装包下载
  18. jQuery点击按钮新增dom
  19. 年中总结 | 经历过求职春招刷题备考疫情洪水的一届毕业预备军真的太太太难啦!
  20. 分享60个PHP源码,总有一款适合您

热门文章

  1. 写下来回头看,在游戏中隐藏线程思路r3
  2. c语言作业做出金山打字功能,C语言小游戏之金山打字
  3. Android Bluetooth蓝牙开发:发现Bluetooth蓝牙设备(1)
  4. [BZOJ]1003 物流运输题解
  5. 权力的游戏 —— 5G多媒体的全球标准(附部分视频)
  6. 移动端记账本部署gitee Pages
  7. 记第一次写出自己的简单python爬虫:GCZW3
  8. [LeetCode周赛复盘] 第 314 场周赛20221009
  9. 一小时刷完英语口语常用3000词汇(绿色护眼版)day9-词汇801-900
  10. 十分钟教你用 svg 做出精美的动画!