c++截取字符串(前端截取字符串的方法)
-
-
类目:知识大全
-
联系人:
-
微信号:
-
Q Q 号:
-
手机号:
-
浏览量:
334
【商户信息】
【货源详情】
我想无论是初学者还是老手,对字符串的切分都很熟悉。 C的substr ) )方法那样使用就足够了,但该方法需要知道要剪切的位置的开始位置和要剪切的字符串的长度,或者知道要剪切的开始位置和停止位置。
背景
上述substr方法在剪切不确定长度的字符串时,或者一次剪切多个段字符串时不太方便。 编辑遇到了这样的问题,以下详细说明。
当前,格式是固定的,但存在长度不确定的字符串。 例如,set (
mill _ ed.8.f _ step tools.1.ST _ profile "、" face "、50.800; 这样的字符串,他的结构很有规律,都用“.”隔开。
如上所述,需要剪切红色部分。 其他部分是固定的。 通常的方法是用“.”分割字符串,然后分别剪切部分。 但是,因为我很麻烦,所以我考虑了正则表达式,考虑是否可以使用正则表达式来匹配所需的字符。
实现
直接坐上代码吧:
首先来看看运行结果:
怎么一次切出所有需要的子字符串,不是很方便很迅速吗? 请注意这里。 result容器中的第一项是成功匹配的整个字符串,后跟括号中()匹配条件的子字符串。
详解
接下来,我们来看看C正则的一些基本用法。 我们在使用c的正则时需要引入regex库#includeregex,这个库里包含了什么?
虽然忽略此处的函数和类型,但主要使用regex_match方法。 然后将正则表达式与目标字符串匹配,并且所有匹配结果都位于smatch类型的容器中。 其中最终求得的主要是regex正则表达式
regexpattern=regex(「set ((() (.* ) ) ) (d ) ).\.ST _ profile (.* ) ) (a-z )”是核心。 这里使用的正则知识其实是基本的,并不是很复杂。 如果同伴不能自己去看关于正则的知识,正则是通用的,不管编程语言如何。 说一下这里使用的通配符的意思吧。 (截图来源私人教程) )。
需要匹配的子字符串表达式必须用小括号「()”括起来。 否则,匹配结果不会进入smatch容器。 验证一下吧。 让我们去掉第一个子表达式的小括号(“)”)并看看结果。 regexpattern=regex (() ) ) )。
结果如下。
结果发现与上次相比,mill_ed这个项目减少了。
希望能帮到大家。 如果大家以后在处理字符串方面有这样的需求,可以试试这个方法。 我个人觉得很好用。 最后附上源代码吧
#include stdio.h
#include iostream
#include regex
using namespace std;
int main () )
{
stringstr('set )、' mill _ ed.8.f _ step tools.1.ST _ profile )、' face )、50.800 )、' );
regexpattern=regex(set (() ) ).* ) ).* ) ) (d ).\.st_profile ), * ) (a-z ) ) ) ) )
静态结果;
OOLismatch=regex_match(str,result,pattern );
for(intI=0; i result.size (; I )
{
coutresult[i]endl;
() ) ) ) )。
系统(pause );
返回0;
() ) ) ) )。