游客发表

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

发帖时间:2025-11-05 04:52:30

前言:

我们经常会遇到一些Linux内核信息需要,析特比如一个wifi数据,殊符中间是号T换行用tab键盘隔开的,然后每一行用换行符进行区分,符号如下所示的析特数据

第一位置是:wifi名称 第二个位置是:信号强度 第三个位置是:信号类型2.4Ghz或者5Ghz 第四个位置是:加密类型 第五个类型是:MAC地址

遇到这样的数据,我们比较常见的殊符C函数解析是用while循环去匹配字符串里面的\t(tab键),\n(换行符号)等,号T换行然后用C标准库里面str函数,符号例如strncpy进行复制或者strstr去查找,析特类似于下面所示:

int i, 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信息,免费信息发布网殊符所以给大家分享哈这部分。号T换行

解析代码

对应上面的符号wifi信息的表,我们看到了一行有五个数据,析特这时候打包收到了一个string类型的殊符wifi信息。

第一件事情,号T换行我们先确认好解析的范围,即知道最开始一位和最后一位,设置好recivemsg.begin 和 recivemsg.

第二件事情,进行识别tab符号和换行符号之后进行分段

第三件事情,把分好的数据塞到一个vector容器里面,然后因为每一行都有五个数据,所以我们就可以按照0~5一组的数据进行分发给各处。

实际C++代码如下:

vector<string> Parse_Wifi_List(string& msg) {         vector<string> words;         if(msg.empty())             return words;         string::iterator temp_p = msg.begin();         string sepword;         bool bit_true = false;         while(temp_p != msg.end())         {             if(/* * temp_p ==   || */  * temp_p == \t || * temp_p == \n)             {                 if(bit_true)                 {                     words.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(auto point : words)         // {         //  printf(".%sn",point.c_str());         // }       //for(uint16_t i =0;i<words.size();i+=5)       //{         // printf("[]%s,%sn",words[i].c_str(),words[i+1].c_str(),words[i+3].c_str());         //}         return words;     } 

使用此代码解析LOG如下:

结语

这就是我分享的一个简单的服务器托管C++解析一些特殊符号的实践,如果大家有更好的想法和需求,也欢迎大家加我好友交流分享哈。

本文转载自微信公众号「羽林君」,可以通过以下二维码关注。转载本文请联系羽林君公众号。

作者:良知犹存,白天努力工作,晚上原创公号号主。公众号内容除了技术还有些人生感悟,一个认真输出内容的职场老司机,也是一个技术之外丰富生活的人,摄影、音乐 and 篮球。关注我,与我一起同行。企商汇

    热门排行

    友情链接