C++解析特殊符號tab和換行符號詳情

前言:

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

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

遇到這樣的數據,我們比較常見的C函數解析是用while循環去匹配字符串裡面的’\t'(tab鍵),’\n'(換行符號)等,然後用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信息,所以給大傢分享哈這部分。

解析代碼:

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

我們應該註意三件事情:

  1. 我們先確認好解析的范圍,即知道最開始一位和最後一位,設置好recivemsg.begin recivemsg.
  2. 進行識別tab符號和換行符號之後進行分段
  3. 把分好的數據塞到一個vector容器裡面,然後因為每一行都有五個數據,所以我們就可以按照0~5一組的數據進行分發給各處。

實際代碼如下:

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(".%s\n",point.c_str());
        // }
      //for(uint16_t i =0;i<words.size();i+=5)
      //{
        // printf("[]%s,%s\n",words[i].c_str(),words[i+1].c_str(),words[i+3].c_str());
        //}
        return words;
    }

使用此代碼解析LOG如下:

到此這篇關於C++解析一些特殊符號tab、換行符號的文章就介紹到這瞭,更多相關C++解析一些特殊符號tab、換行符號內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: