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信息,所以给大家分享哈这部分。
【C++解析特殊符号tab和换行符号详情】解析代码:
对应上面的
wifi
信息的表,我们看到了一行有五个数据,这时候打包收到了一个string
类型的wifi
信息。我们应该注意三件事情:
- 我们先确认好解析的范围,即知道最开始一位和最后一位,设置好
recivemsg.begin
和recivemsg.
- 进行识别tab符号和换行符号之后进行分段
- 把分好的数据塞到一个
vector
容器里面,然后因为每一行都有五个数据,所以我们就可以按照0~5一组的数据进行分发给各处。
vector Parse_Wifi_List(string& msg){vector 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
使用此代码解析LOG如下:
文章图片
到此这篇关于C++解析一些特殊符号tab、换行符号的文章就介绍到这了,更多相关C++解析一些特殊符号tab、换行符号内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- opencv|opencv C++模板匹配的简单实现
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- Quartz|Quartz 源码解析(四) —— QuartzScheduler和Listener事件监听
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)
- [源码解析]|[源码解析] NVIDIA HugeCTR,GPU版本参数服务器---(3)
- Android系统启动之init.rc文件解析过程
- c++基础概念笔记
- 小程序有哪些低成本获客手段——案例解析
- Spring源码解析_属性赋值
- Android下的IO库-Okio源码解析(一)|Android下的IO库-Okio源码解析(一) 入门