找回密码
 立即注册
收起左侧

qt如何实现字符串的分割

4
回复
8460
查看
[复制链接]
累计签到:9 天
连续签到:1 天
来源: 2016-11-21 21:17:30 显示全部楼层 |阅读模式
8Qter豆
如图,这是一个传感器返回的数据,第一行只是一句命令响应,不是有效数据
根据报文头可以知道一共是6类数据,分别要对应输出到
HPR, RCD, CCD, HDG, HDT,栏中,最后一个是输出到ASC码那里

图2是输出界面的示意图。

输出数据的每行末尾其实是有“\r\n”回车换行符的,每行数据中的各个数据又被逗号隔开
我只能想到用if判断是不是碰到\r\n了,然后再判断前边几个字符是哪一类,然后再根据逗号
去把数据分类显示出来,但实在是无从下笔,不知道咋写,希望会的大神提供一些建议

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

尚未签到

2016-11-22 00:35:35 显示全部楼层
QString里面有个好像叫spilt的函数可以拆,具体请看文档
回复

使用道具 举报

累计签到:9 天
连续签到:1 天
2016-11-24 21:14:43 显示全部楼层
Joey_Chan 发表于 2016-11-22 00:35
QString里面有个好像叫spilt的函数可以拆,具体请看文档

我用了split去拆分,但是碰到了点新的问题
  1. //已定义
  2.         //QSerialPort* myserial;
  3.         //QByteArray* buf;
  4.         //QTextBrowser* browserx;

  5.         *buf=myserial->readLine();
  6.         QString s = *buf;
  7.         QStringList list = s.split(",", QString::SkipEmptyParts);
  8.         browserx->insertPlainText(list.at(0));
  9.         qDebug()<<list;

  10.         //为什么list.at(1)和list.at(2)以及后边的索引位置会部分不存在呢
  11.         //at(1)还仅仅是少量不存在,at(2)开始就是大量的不存在
复制代码
如果是 *buf=myserial->readAll()的话,从at(3)开始大量报error:index out of range的错误,只有索引0的位置是都存在的,搞不懂list现在到底是什么结构了,qDebug()<<list;显示的list里的一行中单独的字符串挺多的,但是去调用的时候就是不存在,没法上传本地图片啊,我就口头描述了
回复

使用道具 举报

累计签到:9 天
连续签到:1 天
2016-11-24 21:22:38 显示全部楼层
Joey_Chan 发表于 2016-11-22 00:35
QString里面有个好像叫spilt的函数可以拆,具体请看文档

这些数据是一个磁传感器采集传输过来的,不同的地方数据不一样,数据本身是没有规律的,这个软件以前是用VB写的,现在要用QT重写,但是功能不变,比如$PTNTHPR,5274,N,17,N,-7,N*02这行数据,$PTNTHPR后边有6个单独的数据,它们要分别显示到那个界面HPR部分的6个显示框里,我想实现的就是这个功能
回复

使用道具 举报

尚未签到

2016-11-26 01:55:33 显示全部楼层
mhzzz 发表于 2016-11-24 21:22
这些数据是一个磁传感器采集传输过来的,不同的地方数据不一样,数据本身是没有规律的,这个软件以前是用 ...

说到底你要先找到规律才能写算法啊。。。不然很难帮你
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了