日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C++解析一些特殊符號Tab、換行符號

前言:

我們經(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去查找,類似于下面所示:

 
 
 
 
  1. int i, j ; 
  2.  i = 0; 
  3.  j = strlen(strIn) - 1; 
  4.  while(strIn[i] == ' ' || strIn[i] == '\t') 
  5.          ++i; 
  6.  
  7.  while(strIn[j] == ' ' || strIn[j] == '\t') 
  8.          --j; 
  9.  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++代碼如下:

 
 
 
 
  1. vector Parse_Wifi_List(string& msg) 
  2.         vector words; 
  3.         if(msg.empty()) 
  4.             return words; 
  5.         string::iterator temp_p = msg.begin(); 
  6.         string sepword; 
  7.         bool bit_true = false; 
  8.         while(temp_p != msg.end()) 
  9.         { 
  10.             if(/* * temp_p == ' ' || */  * temp_p == '\t' || * temp_p == '\n') 
  11.             { 
  12.                 if(bit_true) 
  13.                 { 
  14.                     words.push_back(sepword); 
  15.                     PP_INFO("seword :%s",sepword.c_str()); 
  16.                     sepword.clear(); 
  17.                 }    
  18.                 bit_true = false; 
  19.                 temp_p++; 
  20.                 continue; 
  21.             } 
  22.             else 
  23.             { 
  24.                 bit_true = true; 
  25.                 sepword += *temp_p; 
  26.             } 
  27.             if(*temp_p ++ == '\0') 
  28.             { 
  29.                 break; 
  30.             } 
  31.             // else 
  32.             // { 
  33.             //  PP_INFO("%d %d %c",msg.end(),*temp_p,*temp_p); 
  34.             // } 
  35.         } 
  36.         // for(auto point : words) 
  37.         // { 
  38.         //  printf(".%s\n",point.c_str()); 
  39.         // } 
  40.       //for(uint16_t i =0;i
  41.       //{ 
  42.         // printf("[]%s,%s\n",words[i].c_str(),words[i+1].c_str(),words[i+3].c_str()); 
  43.         //} 
  44.         return words; 
  45.     } 

使用此代碼解析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