获取分割字符串的内容高级技巧
获取arp -a 返回
const char * test = "接口: 192.168.1.144 --- 0x5"
" Internet 地址 物理地址 类型"
" 192.168.1.1 cc-81-da-02-ed-f1 动态"
" 192.168.1.255 ff-ff-ff-ff-ff-ff 静态"
" 224.0.0.22 01-00-5e-00-00-16 静态"
" 224.0.0.251 01-00-5e-00-00-fb 静态"
" 224.0.0.252 01-00-5e-00-00-fc 静态"
" 239.255.255.250 01-00-5e-7f-ff-fa 静态"
" 255.255.255.255 ff-ff-ff-ff-ff-ff 静态";
返回如上面的字符串,如何分割出来呢,获取mac 和 ip 地址的对应,有两种方法一是使用正则表达式,二是使用stl的stringstream 和getline 方法
1 使用stringstream
1 分割行
2 分割字符串
3 插入map表
1.1、getline
使用getline 函数分割行,这个可以参考我的其他文章
1.2、使用streamstream 分割字符串
string test2 = " 192.168.1.1 cc-81-da-02-ed-f1 动态";std::stringstream s(test2);string s1, s2, s3;s >> s1 >> s2 >> s3;cout << s1 << endl;cout << s2 << endl;cout << s3 << endl;
输出
192.168.1.1
cc-81-da-02-ed-f1
动态
2 使用正则表达式
(\S+)\s+(\S+)\s+(\S+)
2.1 使用getline分割
这一部分略过
2.2 使用正则
(\S+)\s+(\S+)\s+(\S+)
解释一下:S 为所有非空白字符,相当于
char * pos = " xxxx xxx xxx "
while((*pos++)!=' ');
后跳到了第一个非空白字符
s 为空白字符,意思为当中有空白字符,相当于stringstream 的字符串移位输出去掉空格,+在正则表达式中意思为一个或者多个
#include <regex>
#include <iostream>
#include <string>
#include <sstream>
std::string test1 = "接口: 192.168.1.144 --- 0x5";
std::string test2 = " 192.168.1.1 cc-81-da-02-ed-f1 动态";const char * test = "接口: 192.168.1.144 --- 0x5"
" Internet 地址 物理地址 类型"
" 192.168.1.1 cc-81-da-02-ed-f1 动态"
" 192.168.1.255 ff-ff-ff-ff-ff-ff 静态"
" 224.0.0.22 01-00-5e-00-00-16 静态"
" 224.0.0.251 01-00-5e-00-00-fb 静态"
" 224.0.0.252 01-00-5e-00-00-fc 静态"
" 239.255.255.250 01-00-5e-7f-ff-fa 静态"
" 255.255.255.255 ff-ff-ff-ff-ff-ff 静态";
int main() {//std::stringstream s = test2;std::string target = "@abc def--";std::regex e("(\\S+)\\s+(\\S+)\\s+(\\S+)");std::smatch sm;std::regex_search(test2, sm, e);for (int i = 0; i < sm.size(); ++i) {std::cout << "sm[" << i << "]: " << sm[i] << std::endl;}std::cout << "sm.prefix: " << sm.suffix() << std::endl;return 0;
}
输出:
sm[0]: 192.168.1.1 cc-81-da-02-ed-f1 动态
sm[1]: 192.168.1.1
sm[2]: cc-81-da-02-ed-f1
sm[3]: 动态
sm.prefix:
总结
在分割字符串的过程中,可以使用常用的字符串技巧和正则表达式相结合的方式
获取分割字符串的内容高级技巧相关推荐
- java正则表达式获取指定两个字符串之间内容
xml解析利用正则表达式获取指定两个字符串之间内容 在遇到解析复杂xml的时候,想到大家所想到的都是利用dom4j作为首发工具,但是当遇到层次很多,较为复杂,我们难道还需要从根节点一层一层的解析下去吗 ...
- python获取输入框内容长度_python3 tkinter 获取输入字符串长度
python 3 获取输入字符长度 #-*- coding:utf-8 -*- from tkinter import * from tkinter import messagebox def ge ...
- Linux 命令之 cut -- 分割字符串,显示或删除指定字段的内容,合并文件内容
文章目录 一.命令介绍 二.常用选项 三.命令示例 根据指定的字节范围显示指定文件中的内容 指定字段分隔符,显示指定字段的内容 显示指定字段的内容 根据指定的字符范围显示指定文件中的内容 显示指定字段 ...
- 获取分割后右边的字符串
在数据库实现字符串分割,然后获取分割后右边的字符串,如: 实现这个功能,主要是从右边开始去获取分割的字符的位置来进行切割: CREATE FUNCTION [dbo].[svf_GetSplitRig ...
- 如何分割字符串以便可以访问项目x?
使用SQL Server,如何分割字符串以便可以访问项x? 取一个字符串" Hello John Smith". 我如何按空格分割字符串并访问索引1的项目,该项目应返回" ...
- 字符串处理分割字符串
**strtok** 分解字符串为一组字符串.s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符).首次调用时,s指向要分解的字符串,之后再次调用要把s设成N ...
- Shell脚本实现简单分割字符串
这篇文章主要介绍了Shell脚本实现简单分割字符串,本文讲解使用CUT命令实现以逗号.分号或其它分隔符来切割字符串,需要的朋友可以参考下 我们有这样一个字符串: 复制代码代码如下: info='abc ...
- shell split分割字符串_Python3 CookBook | 字符串和文本
欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来. 以下测试代码全部基于 Python3. 字符串操作在程序中的出现频率相当高,包括分割,替换,拼接等等,这篇文章介绍五个最常遇到的问题 ...
- Google C++每周贴士 #10: 分割字符串,不必拘小节
(原文链接:https://abseil.io/tips/10 译者:clangpp@gmail.com) 每周贴士 #10: 分割字符串,不必拘小节 最初发布于:2012-08-16 作者:Greg ...
最新文章
- Mysql5.6-DDL是否加锁
- [导入]XmlReader 读取器读取内存流 MemoryStream 的注意事项
- [转载]使用RoboCopy 命令
- ubuntu搭建【python】运行环境
- stm32l0的停止模式怎么唤醒_「正点原子STM32Mini板资料连载」第十九章 待机唤醒实验...
- matlab怎么画二维热力图_Tableau画日历热力图
- 不同环境配置Django
- linux系统 锐捷_Client for RuiJie(锐捷客户端 for linux) 升级版
- C语言从入门到精通——初阶1 初识C语言
- FPGA使用ISERDES2过采样
- 免费电子书籍--网址
- oracle客户端免安装教程,免安装Oracle客户端软件
- BMFont字体编辑器的使用
- 电脑网络——QQ、微信可以登录,浏览器打不开的解决方法
- h5物体拖动_iH5高级教程:H5交互进阶,拖动物品效果
- yocs_cmd_vel_mux和yocs_velocity_smoother
- 程序员如何编写高大上且实用的技术文档--转
- 圣墟手游怎么在电脑上玩 圣墟PC版玩法教程
- Pytorch中dim的理解
- 安卓手机安装charles证书后,抓包依然提示unkown问题(An unknown issue occurred processing the certificate )
热门文章
- java em算法_python em算法的实现
- 301跳转 https_http跳转https和https跳转http的两种301重定向代码
- 利用python进行数据分析 笔记_利用python进行数据分析--(阅读笔记一)
- 定时更换超级连接的代码
- 在这个功能上,iOS 落后 Android 了
- 知乎回应“腾讯搜狗退出知乎股东”:是上市后的标准操作
- 苹果“炸场”发布会官宣定档10月19日!终于等到你俩
- Facebook再次发生全球性宕机
- 威马汽车创始人沈晖:10万以下的不能叫智能电动汽车
- 罗永浩:当年签了 “流氓协议” 将公布这个恶劣投资者