这篇文章主要给大家介绍的是C++解析一些特殊符号tab、换行符号的一些相关资料,需要的小伙伴可以参考下面文章的具体内容
前言:
我们经常会遇到一些Linux内核信息需要,比如一个wifi数据,中间是用tab键盘隔开的,然后每一行用换行符进行区分,如下所示的数据
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());
/
沃梦达教程
本文标题为:C++解析特殊符号tab和换行符号详情
猜你喜欢
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- C语言详解float类型在内存中的存储方式 2023-03-27
- C语言qsort()函数的使用方法详解 2023-04-26
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- C++ 数据结构超详细讲解顺序表 2023-03-25
- ubuntu下C/C++获取剩余内存 2023-09-18
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- Easyx实现扫雷游戏 2023-02-06
- Qt计时器使用方法详解 2023-05-30
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30