当前位置: 首页 > 科技观察

C++解析一些特殊符号Tab和换行符

时间:2023-03-18 21:04:33 科技观察

前言:我们经常会遇到一些Linux内核信息需求,比如一个wifi数据,中间用tab键盘分隔,然后每行用换行符区分,如下显示数据第一位为:wifi名称,第二位为:信号强度,第三位为:信号类型2.4Ghz或5Ghz,第四位为:加密类型,第五位为:MAC地址。数据,我们常见的C函数分析是使用while循环来匹配字符串中的'\t'(tab键),'\n'(换行符)等,然后使用C标准库中的str函数,比如strncpy复制或者strstr来查找,类似如下:inti,j;i=0;j=strlen(strIn)-1;while(strIn[i]==''||strIn[i]=='\t')++i;while(strIn[j]==''||strIn[j]=='\t')--j;strncpy(strOut,strIn+i,j-i+1);那我们怎么用C++来分析呢?最近刚分析了一些wifi的资料,就把这部分分享给大家。解析代码对应上面的wifi信息表。我们看到一行有五个数据。这时我们收到了一个字符串类型的wifi信息。第一件事,我们先确认分析的范围,也就是我们知道首位和末位,设置recivemsg.begin和recivemsg。第二件事是识别制表符和换行符并进行分割第三件事是将分割后的数据放入一个vector容器中,因为每一行有5条数据,所以我们可以将数据以0~5为一组分布到各个地方。实际的C++代码如下:while(temp_p!=msg.end()){if(/**temp_p==''||*/*temp_p=='\t'||*temp_p=='\n'){if(bit_true){字。push_back(sepword);PP_INFO("seword:%s",sepword.c_str());sepword.clear();}bit_true=false;temp_p++;continue;}else{bit_true=true;sepword+=*temp_p;}if(*temp_p++=='\0'){break;}//else//{//PP_INFO("%d%d%c",msg.end(),*temp_p,*temp_p);//}}//for(autopoint:words)//{//printf(".%s\n",point.c_str());///for(uint16_ti=0;i