扩展代码,

#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 对象将保存匹配的结果信息,包括匹配的子字符串、子匹配的位置等。