当前位置:首页 > 生活百科

c++截取字符串的方法是什么(截取字符串的方法介绍)

栏目:生活百科日期:2025-04-08浏览:0

字符串截取我想每个程序猿不管是新手还是老手都很熟悉了,像C++里的substr()方法就十分好用,但是这个方法需要知道你要截取位置的起始位置和需要截取的字符串长度,又或者需要知道截取的起始位置和停止位置。

背景

上面说的substr方法在截取不确定长度字符串和一次性截取多段子字符串时用起来不是很方便。小编就遇到这样的问题,下面来详细讲讲:

现在有一串格式固定但是长度不确定的字符串,例如:set(“
mill_ed.8.f_steptools.1.st_profile”, “face”, 50.800);这样一个字符串,他的结构是有规律的,都是由“.”分隔。

如上,我需要截取标红色的部分,其他部分都是固定的,按照常规方法我是可以先用“.”将字符串分割,然后再有部分的再分别去截取。但是我嫌麻烦,于是我就想到了正则表达式,想着能不能用正则去将我需要的字符匹配出来。

实现

直接上代码吧:

先看下运行结果吧:

怎么样一次性将所有需要的子字符串全部截取出来了,是不是很方便快捷呢?(大家注意一下这里,result容器内的第一项是匹配成功的整字符串,后面的才是小括号中()匹配条件的子字符串)。

详解

接下来我们来了解一下C++正则的一些基本用法吧。我们在用C++的正则的时候需要引入regex库#include&<regex&>,这个库里面有哪些东西呢?

这里的函数和类型我就不讲了,主要用到regex_match方法。然后将目标字符串与你得正则表达式去匹配,得到的匹配结果全部在smatch类型的容器中。其中最终要的主要是regex正则表达式

regex pattern = regex(&“set\(&“.*)\.(\d+)\.(.*)\.(\d+)\.st_profile&”,.*&”([a-z]+)&”,(.*)\).*&”);这里是核心,这里用到的正则知识其实都是最基本的,不是很复杂,如果有不懂得小伙伴自己去看下正则相关的知识,正则是与编程语言无关的都是通用的。大概讲一下这里用到的几个通配符的意思:(截图来源菜鸟教程)

需要特别说明的是你需要匹配出来的子字符串的表达式一定要用小括号“()”括起来,不然的话匹配结果是不会进入到smatch容器里去的,我们验证一下,我将第一个子表达式的小括号“()”去掉我们看一下结果:regex pattern = regex(&“set\(&“.*\.(\d+)\.(.*)\.(\d+)\.st_profile&”,.*&”([a-z]+)&”,(.*)\).*&”);

运行结果是:

我们看到结果与上一次比少了mill_ed这一项。

希望对大家有帮助,如果大家以后在处理字符串有这种需求的话可以尝试一下这种方法,我个人觉得用起来是很方便快捷的。最后给大家附上源代码吧

#include &<stdio.h&>#include &<iostream&>#include &<regex&>using namespace std;int main(){string str("set("mill_ed.8.f_steptools.1.st_profile","face", 50.800);");regex pattern = regex("set\("(.*)\.(\d+)\.(.*)\.(\d+)\.st_profile",.*"([a-z]+)",(.*)\).*");smatch result ;bool isMatch = regex_match(str,result,pattern);for (int i = 0; i &< result.size(); i++){cout&<&<result[i]&<&<endl;}system("pause");return 0 ;}

“c++截取字符串的方法是什么(截取字符串的方法介绍)” 的相关文章

什么叫vi设计什么叫广告(附VI设计的3大组成部分)

VI对于一家企业的生存和发展起着决定性因素,国内很多小企业很容易就倒闭,就是因为一开始品牌VI设计没有做好,导致企业发展到一定规模后遇到瓶颈,很难突破想要转型,...

事件营销是什么,十大经典事件营销案例分享

在正式启动事件营销之前,你至少需要准备这三件事:反差感十足的事件、可视觉化的传播源、内置记忆点的主题句。“公司缺钱,优先砍营销预算”。这句话近乎铁律一般的存在。...

商保和社保的区别是什么,社保和商保的报销比例

社保是我们生活最基本的保障,是维持基本生活的保证。而商保则更加强大、独特的保障功能和资产保全功能是其他任何金融工具不可替代的。具体我们可作如下几个方面的比较:1...

分析建模的重点是什么(分析建模的4个重点内容)

其实很多学习者,特别是初学者,在最开始接触建模的时候,拿到准备要建模的设计方案后,都会急忙的打开建模界面,动起鼠标,就开始去画产品方案的轮廓线等。其实,这样是不...

小区楼下地摊货卖什么最好赚钱,这几个品种保证稳赚不赔

中央文明办在今年的全国文明城市测评指标中,未将占道经营、马路市场、流动商贩列为文明城市测评考核内容,很多城市因此也放松了对地摊商贩的管控,那么摆地摊卖什么最赚钱...

兄弟打印机清零方法(打印机取墨盒的步骤)

佳能清零打印机必须没有墨盒错误问题才能清零否则你永远无法清零佳能清零打印机必须没有墨盒错误问题才能清零否则你永远无法清零佳能清零打印机必须没有墨盒错误问题才...

win10时间设置在哪里(win10系统修改时间的方法)

日前有玩家发现一个奇怪的问题,主板BIOS中如果时间设置到3001年1月18日之后,那Win10就无法启动了。Windows10系统什么都好,就是bug有点多,...

什么是css样式及作用(css特效样式知识解析)

上几节我们把HTML相关的必要知识点给大家已经讲完,剩下的细节大家可以查阅资料再进行深入研究。从这一节开始,我们正式进入CSS的学习,在学习之前我们先介绍几个概...

idx文件是什么文件(文件扩展名一览表)

1.概述为什么微图下载的卫星影像是DAT文件?为什么水经注在百度网盘免费分享的卫星影像是DAT文件?为什么水经注在百度网盘免费分享的高程DEM是DAT文件?为什...

免费论文ppt模板范文(优秀论文答辩ppt范例)

阿飞送你们一本答辩必过的秘籍,包括前期答辩准备、以及答辩PPT的书写,文章末尾还有答辩PPT大礼包免费相送,简直不能更帅。答辩是什么答辩,官方说法是几位相关专业...