本篇文章为大家展示了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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。