首页 理论教育 C++STL精解:类模板match

C++STL精解:类模板match

时间:2023-10-25 理论教育 版权反馈
【摘要】:类模板match_results描述了一个对象。该类的构造函数包含了3种形式:第一种形式是默认的构造函数;第二种形式是利用match_results类型的常量实现构造该类对象;第三种形式是利用match_results类型的变量实现构造该类对象。size()函数返回match_results类型对象中的子表达式个数。swap()函数用于交换两个match_result类型对象的内容和大小。

C++STL精解:类模板match_results简明指南

类模板match_results描述了一个对象。该对象控制一个不可调整的元素序列(该元素序列是通过正则表达式搜索产生的)。每个元素指向其子序列,这些子序列和相关规则相匹配。该类中所含内容是非常丰富的。其声明形式如下:

978-7-111-51399-5-Chapter17-40.jpg

978-7-111-51399-5-Chapter17-41.jpg

从上述内容可知,该类包含了大量的成员函数。下面分别介绍这些成员函数。

978-7-111-51399-5-Chapter17-42.jpg

上述代码分别定义了多个类型:value_type、const_reference、reference、const_iterator、iterator、difference_type、size_type、allocate_type、char_type以及string_type。

该类的构造函数包含了3种形式:

978-7-111-51399-5-Chapter17-43.jpg

第一种形式是默认的构造函数;第二种形式是利用match_results类型的常量实现构造该类对象;第三种形式是利用match_results类型的变量实现构造该类对象。

两个operator=()函数用于在同类型变量之间进行赋值。其声明形式为:

978-7-111-51399-5-Chapter17-44.jpg

当类match_results的对象已经完全建立时,函数ready()返回true;否则,返回false。

size()函数返回match_results类型对象中的子表达式个数。

empty()函数用于判断该对象中是否为空。

length()函数用于返回match_result类型对象中第n个匹配的子表达式的长度

position()函数用于返回各子表达式第一个字符在原来序列中的位置。

str()函数用于将该类型对象转化为字符串。

prefix()函数和suffix()分别返回原有序列中,目标序列之前或之后的部分。

begin()函数和end()分别返回match_results类型对象中第一个子表达式的位置或最后位置。(www.xing528.com)

cbegin()函数和cend()的前缀“c”代表常量迭代式const_iterator。

swap()函数用于交换两个match_result类型对象的内容和大小。

format()函数主要适用于格式化字符串。此函数的使用比较复杂,涉及的参数也比较复杂。

978-7-111-51399-5-Chapter17-45.jpg

其中参数flags是最复杂的,其参数值也最复杂,见表17-1、表17-2和表17-3。另外,格式字符串中替代符的功能详见表17-6。

17-6 格式替代符的功能

978-7-111-51399-5-Chapter17-46.jpg

该类的使用方法参见例17-6。

smatch是类模板match_result的实例化类其定义形式为

978-7-111-51399-5-Chapter17-47.jpg

此外,类cmatch也是类模板match_result的实例化类。

例17-6

978-7-111-51399-5-Chapter17-48.jpg

978-7-111-51399-5-Chapter17-49.jpg

978-7-111-51399-5-Chapter17-50.jpg

例17-6的执行结果如下:

978-7-111-51399-5-Chapter17-51.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈