📜  match_results cbegin()在C++ STL中添加cend()(1)

📅  最后修改于: 2023-12-03 15:17:33.002000             🧑  作者: Mango

match_results cbegin()cend() 在 C++ STL 中的介绍

在 C++ STL 中,match_results 类是用于表示正则表达式匹配结果的类。match_results cbegin() 函数和 cend() 函数是用于返回 match_results 类对象的起始和结束迭代器的成员函数。

1. match_results 类

match_results 类是模板类 std::match_results 的实例化,用于保存正则表达式的匹配结果。它提供了一种方便的方式来访问和操作匹配的子字符串。

2. cbegin() 函数

cbegin()match_results 类的成员函数。它返回一个常量迭代器,指向 match_results 对象的第一个匹配子字符串。

函数签名如下:

const_iterator cbegin() const;

其中,const_iterator 是一个常量迭代器类型,用于遍历 match_results 对象内的匹配子字符串。

3. cend() 函数

cend()match_results 类的成员函数。它返回一个常量迭代器,指向 match_results 对象的结束位置。

函数签名如下:

const_iterator cend() const;
4. 用法示例

下面是一个使用 match_results cbegin()cend() 函数的示例代码:

#include <iostream>
#include <regex>

int main() {
    std::string text = "Hello World!";

    std::regex regex("W[a-z]+");

    std::match_results<std::string::const_iterator> results;
    std::regex_search(text, results, regex);

    if (results.size() > 0) {
        std::cout << "Matched substring(s):" << std::endl;
        for (auto it = results.cbegin(); it != results.cend(); ++it) {
            std::cout << *it << std::endl;
        }
    } else {
        std::cout << "No match found." << std::endl;
    }

    return 0;
}

以上示例中,创建了一个 match_results<std::string::const_iterator> 对象 results,并使用 regex_search 函数进行正则表达式匹配。然后,使用 cbegin()cend() 函数遍历 results 中的匹配子字符串,并输出结果。

5. 总结

match_results cbegin()cend() 函数是用于在 C++ STL 中遍历 match_results 对象内的匹配子字符串的成员函数。它们返回常量迭代器,方便程序员访问和操作匹配结果。在正则表达式匹配中,它们提供了一种强大的工具来处理匹配的子字符串。

6. 参考文献
  • Cplusplus.com. (2021). std::match_results::cbegin - C++ Reference. [online] Available at: https://www.cplusplus.com/reference/regex/match_results/cbegin/ [Accessed 6 Dec. 2021].
  • Cplusplus.com. (2021). std::match_results::cend - C++ Reference. [online] Available at: https://www.cplusplus.com/reference/regex/match_results/cend/ [Accessed 6 Dec. 2021].