std::smatch
时间: 2024-10-11 14:08:03 浏览: 68
`std::smatch` 是 C++ 标准库 `<regex>` 头文件中的一部分,它是一个模板类,用于存储由正则表达式模式匹配得到的结果。当你使用 `std::regex_match()` 或 `std::regex_search()` 等函数对输入字符串进行匹配时,`smatch` 对象会被用来保存找到的匹配项及其范围。
`smatch` 类型的实例包含一个容器适配器,内部包含一个大小固定的数组,每个元素对应正则表达式中的一个捕获组。这些捕获组通常是通过在正则表达式中使用圆括号 `( )` 来定义的。你可以通过 `smatch` 的成员函数如 `.begin()`、`.end()` 访问匹配结果,以及 `.str()` 获取匹配的子串,`.first` 和 `.second` 属性获取开始和结束的位置等。
举个例子:
```cpp
std::string str = "Hello (World), nice to meet you!";
std::regex pattern("(\\w+) \\((\\w+)\\)");
std::smatch match;
if (std::regex_search(str, match, pattern)) {
std::cout << "Matched: " << match[0] << ", World = " << match[1] << ", nice = " << match[2] << '\n';
}
```
在这个例子中,`match` 匹配到了整个字符串、第一个括号内的单词("World")和第二个括号内的单词("nice")。
阅读全文