成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++解析一些特殊符號Tab、換行符號

開發 后端
我們經常會遇到一些Linux內核信息需要,比如一個wifi數據,中間是用tab鍵盤隔開的,然后每一行用換行符進行區分。

[[398927]]

前言:

我們經常會遇到一些Linux內核信息需要,比如一個wifi數據,中間是用tab鍵盤隔開的,然后每一行用換行符進行區分,如下所示的數據

第一位置是:wifi名稱 第二個位置是:信號強度 第三個位置是:信號類型2.4Ghz或者5Ghz 第四個位置是:加密類型 第五個類型是:MAC地址

遇到這樣的數據,我們比較常見的C函數解析是用while循環去匹配字符串里面的'\t'(tab鍵),'\n'(換行符號)等,然后用C標準庫里面str函數,例如strncpy進行復制或者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信息,所以給大家分享哈這部分。

解析代碼

對應上面的wifi信息的表,我們看到了一行有五個數據,這時候打包收到了一個string類型的wifi信息。

第一件事情,我們先確認好解析的范圍,即知道最開始一位和最后一位,設置好recivemsg.begin 和 recivemsg.

第二件事情,進行識別tab符號和換行符號之后進行分段

第三件事情,把分好的數據塞到一個vector容器里面,然后因為每一行都有五個數據,所以我們就可以按照0~5一組的數據進行分發給各處。

實際C++代碼如下:

  1. vector<string> Parse_Wifi_List(string& msg) 
  2.         vector<string> 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<words.size();i+=5) 
  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如下:

結語

這就是我分享的一個簡單的C++解析一些特殊符號的實踐,如果大家有更好的想法和需求,也歡迎大家加我好友交流分享哈。

本文轉載自微信公眾號「羽林君」,可以通過以下二維碼關注。轉載本文請聯系羽林君公眾號。

 

作者:良知猶存,白天努力工作,晚上原創公號號主。公眾號內容除了技術還有些人生感悟,一個認真輸出內容的職場老司機,也是一個技術之外豐富生活的人,攝影、音樂 and 籃球。關注我,與我一起同行。

 

責任編輯:武曉燕 來源: 羽林君
相關推薦

2014-08-01 17:12:14

Linux特殊符號

2009-09-02 14:30:35

C#換行符號

2009-11-25 09:23:47

PHP引用&符號

2011-07-19 13:49:19

Objective-C 數據類型

2010-06-23 17:21:30

Linux Bash

2010-03-11 17:57:48

Python正則表達式

2014-03-17 10:10:58

CC++編程書籍

2013-06-03 09:45:53

R語言

2010-06-28 18:52:49

UML關系符號

2010-06-12 12:40:59

UML類圖符號

2011-08-10 15:58:12

WPS符號欄

2011-11-11 16:02:39

2010-06-12 12:48:36

UML類圖符號

2010-08-17 10:16:37

DIV樣式

2010-05-28 14:44:42

Linux開發工具

2011-08-31 18:28:55

MTK

2010-07-12 15:16:29

UML關聯

2019-05-24 09:04:31

C++編程語言開發

2009-08-13 16:41:12

C#結構

2011-07-26 17:43:49

Xcode SVN
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 草草视频在线观看 | 欧美日韩久久久 | 久久久久九九九女人毛片 | 九九九久久国产免费 | 中文字幕视频一区二区 | 色噜噜亚洲男人的天堂 | 日韩视频国产 | 国产精品色婷婷久久58 | 午夜av一区二区 | 免费精品 | 国产亚洲精品久久午夜玫瑰园 | 一级片免费视频 | 综合国产 | 国产精品欧美一区二区 | 国产一区二区三区久久久久久久久 | 在线观看黄免费 | 天天综合网天天综合色 | 国产最新网址 | 福利视频一区 | 在线观看亚洲专区 | 日韩欧美亚洲 | 欧美二区在线 | 九色在线视频 | 精品一区二区观看 | 一区二区在线不卡 | 91精品国产综合久久久久久丝袜 | 亚洲成人网在线播放 | 久色激情| 自拍偷拍在线视频 | 天天摸天天看 | www.狠狠干 | 精品av| 成人1区 | 欧美精品第三页 | 日韩av成人在线 | 男人视频网站 | 国产精品成人一区二区三区 | 欧美乱操 | 午夜国产精品视频 | 99国产精品视频免费观看一公开 | 国产成人精品免高潮在线观看 |