gpt4 book ai didi

c++ - 尝试访问未初始化的 boost::match_results<> 类

转载 作者:行者123 更新时间:2023-11-28 02:18:35 24 4
gpt4 key购买 nike

该模式与点前 <= 10 位的任何 float 数匹配。

string pattern = (?<value>([1-9][0-9]{0,9})(,[0-9]+){0,1});
string line = " s - ssd";
boost::regex expr{val_pat};
boost::smatch match;
boost::regex_search(line, match, expr);
if(match["value"].matched){
cout << match["value"]<<endl;
}

这段代码给了我

Attempt to access an unitialized boost::match_result<> class error.

如何安全地提取命名组:值?

最佳答案

boost::regex_search后置条件为

If the function returns false, then the effect on parameter m is undefined, otherwise the effects on parameter m are given in the table:

所以您需要做的是捕获 regex_search 的返回值以确保它确实找到了某些东西,或者可以将其用作 if 语句的条件,例如

if(boost::regex_search(line, match, expr)){
if(match["value"].matched){
cout << match["value"]<<endl;
}
}

如果你可以使用 C++11,你就可以使用 std::regex_search即使没有找到匹配项,它也会更新匹配参数。

关于c++ - 尝试访问未初始化的 boost::match_results<> 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33266944/

24 4 0
文章推荐: html - 如何使所有选项在