首页 理论教育 C++STL精解:regex_iterator

C++STL精解:regex_iterator

时间:2023-10-25 理论教育 版权反馈
【摘要】:regex_iterator用于描述序列中正则表达式所涉及的所有迭代器序列。对序列末尾进行operator的结果是不确定的。对于任何其他迭代器,使用operator之后会返回一个match_result类型的常量。另外,不可能存储内容至迭代器中。这些迭代器是regex_it-erator< >类型,具有通常的string类型或者字符序列类型的实例,并且具有前缀s、c或wc。构造函数有3种形式,第3种是利用现有的迭代器构造新的迭代器。其作用是构造一个序列尾端迭代器。图17-8 regex_iterator类型迭代器的用法

C++STL精解:regex_iterator

类模板regex_iterator是一种迭代器适配器。regex_iterator用于描述序列中正则表达式所涉及的所有迭代器序列。迭代器regex_iterator使用regex_search()找到序列中连续的正则表达式匹配。迭代器被构造之后,每次operator++被使用时,迭代器会找到并存储match_result类型的值。若达到序列的末尾,则迭代器变成等于序列末尾。默认的构造器构造序列尾端迭代器对象,只有合法的迭代器才可用于指向末尾位置。对序列末尾进行operator∗的结果是不确定的。对于任何其他迭代器,使用operator∗之后会返回一个match_result类型的常量。同样,在序列末尾时,运算符operator- >的结果也是不确定的,对于其他迭代器的值,会返回一个match_result类型指针。另外,不可能存储内容至迭代器中。两个序列末端的迭代器总是相等的。序列末尾的迭代器是不等于非序列尾端的迭代器的。当两个非序列尾端迭代器使用相同参数构造时,这两个非序列尾端的迭代器是可以相等的。

迭代器模板的声明也是很复杂的,包含如下诸多内容:

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

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

若要迭代所有正则搜索到的匹配表达式,则可以使用正则迭代器。这些迭代器是regex_it-erator< >类型,具有通常的string类型或者字符序列类型的实例,并且具有前缀s、c或wc。

其实对于迭代器而言,最常用的成员函数是构造函数、两个比较运算符(==,!=)、引用运算(,->)以及自加函数(++)。

构造函数有3种形式,第3种是利用现有的迭代器构造新的迭代器。

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

其作用是构造一个序列尾端迭代器。(www.xing528.com)

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

其作用是:在序列[a,b]中搜索re,然后确定其位置,并返回其迭代器。

例17-10

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

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

例17-10的执行效果如图17-8所示。

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

图17-8 regex_iterator类型迭代器的用法

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

我要反馈