新聞中心
前言:
我們經(jīng)常會遇到一些Linux內(nèi)核信息需要,比如一個(gè)wifi數(shù)據(jù),中間是用tab鍵盤隔開的,然后每一行用換行符進(jìn)行區(qū)分,如下所示的數(shù)據(jù)

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比臨汾網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式臨汾網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋臨汾地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
第一位置是:wifi名稱 第二個(gè)位置是:信號強(qiáng)度 第三個(gè)位置是:信號類型2.4Ghz或者5Ghz 第四個(gè)位置是:加密類型 第五個(gè)類型是:MAC地址
遇到這樣的數(shù)據(jù),我們比較常見的C函數(shù)解析是用while循環(huán)去匹配字符串里面的'\t'(tab鍵),'\n'(換行符號)等,然后用C標(biāo)準(zhǔn)庫里面str函數(shù),例如strncpy進(jìn)行復(fù)制或者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信息,所以給大家分享哈這部分。
解析代碼
對應(yīng)上面的wifi信息的表,我們看到了一行有五個(gè)數(shù)據(jù),這時(shí)候打包收到了一個(gè)string類型的wifi信息。
第一件事情,我們先確認(rèn)好解析的范圍,即知道最開始一位和最后一位,設(shè)置好recivemsg.begin 和 recivemsg.
第二件事情,進(jìn)行識別tab符號和換行符號之后進(jìn)行分段
第三件事情,把分好的數(shù)據(jù)塞到一個(gè)vector容器里面,然后因?yàn)槊恳恍卸加形鍌€(gè)數(shù)據(jù),所以我們就可以按照0~5一組的數(shù)據(jù)進(jìn)行分發(fā)給各處。
實(shí)際C++代碼如下:
- vector
Parse_Wifi_List(string& msg) - {
- vector
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(".%s\n",point.c_str());
- // }
- //for(uint16_t i =0;i
- //{
- // printf("[]%s,%s\n",words[i].c_str(),words[i+1].c_str(),words[i+3].c_str());
- //}
- return words;
- }
使用此代碼解析LOG如下:
結(jié)語
這就是我分享的一個(gè)簡單的C++解析一些特殊符號的實(shí)踐,如果大家有更好的想法和需求,也歡迎大家加我好友交流分享哈。
本文轉(zhuǎn)載自微信公眾號「羽林君」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系羽林君公眾號。
作者:良知猶存,白天努力工作,晚上原創(chuàng)公號號主。公眾號內(nèi)容除了技術(shù)還有些人生感悟,一個(gè)認(rèn)真輸出內(nèi)容的職場老司機(jī),也是一個(gè)技術(shù)之外豐富生活的人,攝影、音樂 and 籃球。關(guān)注我,與我一起同行。
本文名稱:C++解析一些特殊符號Tab、換行符號
網(wǎng)頁URL:http://m.5511xx.com/article/cccipco.html


咨詢
建站咨詢
