C++ Primer 5th笔记(chap 17 标准库特殊设施)smatch

C++ Primer 5th笔记(chap 17 标准库特殊设施)smatch,第1张

C++ Primer 5th笔记(chap 17 标准库特殊设施)smatch

1. smatch允许获得匹配的上下文

匹配类型有两个名为 prefix 和 suffix的成员, 分别返回表示输入序列中当前匹配之前和之后部分的 SSub_matCh 对象。

一个ssub_match 对象有两个名为 str 和 length 的成员, 分别返回匹配的 string 和该string 的大小

// 显示出匹配单词的上下文
// 循环头与之前一样
for (sregex_iterator it(file.begin(), file.end(), r), end_it; it != end_it; ++it)
{
    auto pos = it->prefix().length(); // 前缀的大小
    pos = pos > 40 ? pos - 40 : 0; // 我们想要最多40个字符
    cout << it->prefix().str().substr(pos) // 前缀的最后一部分
        << " >>> " << it->str() << " <<suffix().str().substr(0, 40) // 后缀的第一部分
        << endl;
}

这些 *** 作也适用于cmatch、wsmatch、wcmatch和对应的csub_match、wssub_match和wcsub_match

match *** 作解释m.ready()如果已经通过调用regex_search或regex_match设置了m,则返回true;否则返回false。如果ready返回false,则对m进行 *** 作是未定义的m.size()如果匹配失败,则返回0;否则返回最近一次匹配的正则表达式中子表达式的数目m.empty()若m.size()为0,则返回truem.prefix()一个ssub_match对象,表示当前匹配之前的序列m.suffix()一个ssub_match对象,表示当前匹配之后的部分——在接受一个索引的 *** 作中,n的默认值为0且必须小于m.size()。——第一个子匹配(索引为0)表示整个匹配。m.length(n)第n个匹配的子表达式的大小m.position(n)第n个子表达式据序列开始的距离m.str(n)第n个子表达式匹配的stringm[n]对应第n个子表达式的ssub_match对象m.begin(), m.end() or m.cbegin(), m.cend()表示m中sub_match元素范围的迭代器。与往常一样,cbegin()和cend()返回const_iterator

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5097606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存