C++解析特殊符號tab、換行符號實例代碼
前言:
我們經(jīng)常會遇到一些Linux內(nèi)核信息需要,比如一個wifi數(shù)據(jù),中間是用tab鍵盤隔開的,然后每一行用換行符進行區(qū)分,如下所示的數(shù)據(jù)
第一位置是:wifi名稱 第二個位置是:信號強度 第三個位置是:信號類型2.4Ghz或者5Ghz 第四個位置是:加密類型 第五個類型是:MAC地址
遇到這樣的數(shù)據(jù),我們比較常見的C函數(shù)解析是用while循環(huán)去匹配字符串里面的'\t'(tab鍵),'\n'(換行符號)等,然后用C標準庫里面str函數(shù),例如strncpy進行復(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信息。
第一件事情,我們先確認好解析的范圍,即知道最開始一位和最后一位,設(shè)置好recivemsg.begin 和 recivemsg.
第二件事情,進行識別tab符號和換行符號之后進行分段
第三件事情,把分好的數(shù)據(jù)塞到一個vector容器里面,然后因為每一行都有五個數(shù)據(jù),所以我們就可以按照0~5一組的數(shù)據(jù)進行分發(fā)給各處。
實際C++代碼如下:
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如下:
結(jié)語
這就是我分享的一個簡單的C++解析一些特殊符號的實踐,如果大家有更好的想法和需求,也歡迎大家加我好友交流分享哈。
到此這篇關(guān)于C++解析特殊符號tab、換行符號的文章就介紹到這了,更多相關(guān)C++解析特殊符號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用C++17實現(xiàn)JSON庫設(shè)計思路示例全解
這篇文章主要為大家介紹了使用C++17實現(xiàn)JSON庫設(shè)計思路示例全解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08C++ OpenCV實現(xiàn)與添加椒鹽噪聲和高斯噪音
圖像噪聲是圖像在獲取或是傳輸過程中受到隨機信號干擾,妨礙人們對圖像理解及分析處理的信號,本文為大家整理了C++結(jié)合OpenCV為圖像添加椒鹽噪聲和高斯噪音的代碼,需要的可以收藏一下2023-09-09Dashboard Interface 應(yīng)用實現(xiàn)操作
Dashboard Server Remote Control Interface是一個關(guān)鍵的功能,它為用戶提供了通過TCP/IP協(xié)議遠程控制機器人的能力,執(zhí)行包括開關(guān)機、加載程序、檢查機器人狀態(tài)以及設(shè)置機器人操作模式等多種操作,本文介紹Dashboard Interface 應(yīng)用操作,感興趣的朋友跟隨小編一起看看吧2024-08-08