溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C++特殊符號tab和換行符號的使用方法

發(fā)布時間:2021-09-26 10:09:00 來源:億速云 閱讀:327 作者:柒染 欄目:開發(fā)技術(shù)

本篇文章為大家展示了C++特殊符號tab和換行符號的使用方法,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

    前言:

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

    C++特殊符號tab和換行符號的使用方法

    第一位置是:wifi名稱 第二個位置是:信號強(qiáng)度 第三個位置是:信號類型2.4Ghz或者5Ghz 第四個位置是:加密類型 第五個類型是: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信息的表,我們看到了一行有五個數(shù)據(jù),這時候打包收到了一個string類型的wifi信息。

    我們應(yīng)該注意三件事情:

    1. 我們先確認(rèn)好解析的范圍,即知道最開始一位和最后一位,設(shè)置好recivemsg.begin recivemsg.

    2. 進(jìn)行識別tab符號和換行符號之后進(jìn)行分段

    3. 把分好的數(shù)據(jù)塞到一個vector容器里面,然后因?yàn)槊恳恍卸加形鍌€數(shù)據(jù),所以我們就可以按照0~5一組的數(shù)據(jù)進(jìn)行分發(fā)給各處。

    實(shí)際代碼如下:

    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和換行符號的使用方法

    上述內(nèi)容就是C++特殊符號tab和換行符號的使用方法,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI