您好,登錄后才能下訂單哦!
本篇文章為大家展示了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
信息。
我們應該注意三件事情:
我們先確認好解析的范圍,即知道最開始一位和最后一位,設置好recivemsg.begin
和 recivemsg.
進行識別tab符號和換行符號之后進行分段
把分好的數據塞到一個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和換行符號的使用方法,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。