iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++解析特殊符号tab和换行符号详情
  • 692
分享到

C++解析特殊符号tab和换行符号详情

2024-04-02 19:04:59 692人浏览 独家记忆
摘要

目录前言: 我们经常会遇到一些linux内核信息需要,比如一个wifi数据,中间是用tab键盘隔开的,然后每一行用换行符进行区分,如下所示的数据 第一位置是:wifi名称 第二个位

前言:

我们经常会遇到一些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信息。

我们应该注意三件事情:

  1. 我们先确认好解析的范围,即知道最开始一位和最后一位,设置好recivemsg.begin recivemsg.
  2. 进行识别tab符号和换行符号之后进行分段
  3. 把分好的数据塞到一个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 == '\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、换行符号的文章就介绍到这了,更多相关C++解析一些特殊符号tab、换行符号内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++解析特殊符号tab和换行符号详情

本文链接: https://www.lsjlt.com/news/136638.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作