扩展代码,
#include <iostream>
#include <regex>
#include <string>
int main() {
std::regex pat(R"(cpp\\w*)"); // regular expression pattern
int lineno = 0;
for (std::string line; std::getline(std::cin, line);) {
++lineno;
std::smatch matches;
if (std::regex_search(line, matches, pat)) {
std::cout << lineno << ": " << matches[0] << '\\n';
}
}
return 0;
}
这里主要是要理解一下这个 smatch 关键字,其实如果加上 std 的命名空间会更好理解一点,但是,书上并没有,所以一开始造成了一点理解上的障碍。
smatch
类是 std::match_results
类的别名,它用于保存与正则表达式匹配的结果。当使用正则表达式进行搜索或匹配时,smatch
对象将保存匹配的结果信息,包括匹配的子字符串、子匹配的位置等。