【QT】提取不定长字符串信息

1. 举例


$OBDRT=14.0,1500,20,17.00,50.00,80,8.00,8.00,65.00,0\r\n

"$OBDRT=14.0,1500,20,17.00,50.00,80,8.00,8.00,65.00,0\r\n"

2. 分析


为了提取这串字符命令里面的10个数据,需要以下几个步骤:

2.1 步骤一:去掉首位("$OBDRT=")

rxbuf.remove(0, 7);
"14.0,1500,20,17.00,50.00,80,8.00,8.00,65.00,0\r\n"

2.2 步骤二:去掉末尾的换行符(“\r\n”)

rxbuf = rxbuf.simplified();

返回一个字符串,该字符串从开头和结尾删除了空格,并将每个内部空格序列替换为单个空格。并将内部包括ASCII字符’\t’,’\n’,’\v’,’\f’,’\r’和’ '.替换为‘ ’,如果替换后有两个空格的话,只保留一个空格。

"14.0,1500,20,17.00,50.00,80,8.00,8.00,65.00,0"

2.3 步骤三:split();方法用于把一个字符串分割成字符串数组

QStringList list = rxbuf.split(",");
double BV = list[0].toDouble();
double RPM = list[1].toDouble();
double SP = list[2].toDouble();
double TO = list[3].toDouble();
double EL = list[4].toDouble();
double CT = list[5].toDouble();
double IFC = list[6].toDouble();
double AFC = list[7].toDouble();
double ROV = list[8].toDouble();
double EN = list[9].toDouble();

把str这个字符串用逗号“,”进行分割,分割后的字符串数组放在list[]中,比如 111,222,333那么list[0]=111 list[1]=222 list[2]=333

2.4 将参数打印

2.4.1 类似mfc中CString的format函数

int year=18;

qDebug("今年我%d",year);

注:   
%c 读入一个字符    
%d 读入十进制整数    
%i 读入十进制,八进制,十六进制整数    
%o 读入八进制整数    
%x,%X 读入十六进制整数   
%s 读入一个字符串,遇空格、制表符或换行符结束。   

%f表示其输出格式为浮点数。%lf同%f,表示浮点数。但是它是用在输入函数scanf中的,而%f则是用在输出函数printf中的。

%c表示输出格式为字符。%s表示其输出格式为字符串。 
%f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。    
%p 读入一个指针    

2.4.2 类似c++的cout函数

QString str="world";

qDebug()<<"hello "<<str<<"!"<<endl;

注:此处endl起到的作用有两个:

a、等同于\n换行

b、刷新缓冲区,将缓冲区数据写入文件或屏幕,因此会影响程序效率。

qDebug("BV =%f RPM =%f SP =%f TO =%f EL =%f CT =%f IFC =%f AFC =%f ROV =%f EN =%f ",BV,RPM,SP,TO,EL,CT,IFC,AFC,ROV,EN);

BV =14.000000 RPM =1500.000000 SP =20.000000 TO =17.000000 EL =50.000000 CT =80.000000 IFC =8.000000 AFC =8.000000 ROV =65.000000 EN =0.000000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米杰的声音

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值