gpt4 book ai didi

C++ regex_search 捕获检索在运行时失败

转载 作者:行者123 更新时间:2023-11-27 23:03:52 26 4
gpt4 key购买 nike

我正在关注 Stroustrup 的 C++ 之旅 - 第 7.3.1 节(第 79 页)中的示例。此代码在 VS 2013 Update 3 上编译但在运行时失败:

regex pat {R"(\w{2}\s+(\d{5}))"};
smatch matches;
if (regex_search(string{"CA 90210"}, matches, pat))
{
if ((matches.size() > 1) && matches[1].matched)
{
cout << matches[1] << endl;
}
}

知道发生了什么事吗?它在我尝试将捕获组结果输出到标准输出的 matches[1] 上失败。我看到的运行时断言是“字符串迭代器不兼容”。

最佳答案

smatch 对象包含指向您使用正则表达式搜索的字符串的迭代器。所述字符串在您的示例中是临时的,并且在您尝试检查匹配项时已失效。所有这些迭代器都是悬空的。

成功

string s = "CA 90210";
if (regex_search(s, matches, pat)) {...}

关于C++ regex_search 捕获检索在运行时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25131334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com