将Boost STD::String::StristyItActer转换为String和int C++

将Boost STD::String::StristyItActer转换为String和int C++,c++,regex,boost,casting,C++,Regex,Boost,Casting,我需要将const_迭代器转换为一种可以对其执行int和string操作的类型。 结果[1]包含我需要处理的正则表达式搜索中的文本。 我已经花了几个小时尝试转换成一个可行的格式,没有成功 boost::match_results<std::string::const_iterator> results; boost::regex ex(pattern, boost::regex::perl); if(boost::regex_search(line, resu

我需要将const_迭代器转换为一种可以对其执行int和string操作的类型。 结果[1]包含我需要处理的正则表达式搜索中的文本。 我已经花了几个小时尝试转换成一个可行的格式,没有成功

boost::match_results<std::string::const_iterator> results;
      boost::regex ex(pattern, boost::regex::perl);
      if(boost::regex_search(line, results, ex))
        (results[1] > 10) ? cout << "Fail" : cout << "Pass";
谢谢, Joe

您可以根据常量字符串迭代器的匹配结果创建一个std::string,如下所示:

std::string result_string( results[1].first, results[1].second );
int result_int = boost::lexical_cast< int >( result_string );
…或者简单地说:

std::string result_string = results[1].str();
可以将字符串强制为int,如下所示:

std::string result_string( results[1].first, results[1].second );
int result_int = boost::lexical_cast< int >( result_string );
您可以根据常量字符串迭代器的匹配结果创建std::string,如下所示:

std::string result_string( results[1].first, results[1].second );
int result_int = boost::lexical_cast< int >( result_string );
…或者简单地说:

std::string result_string = results[1].str();
可以将字符串强制为int,如下所示:

std::string result_string( results[1].first, results[1].second );
int result_int = boost::lexical_cast< int >( result_string );

结果[1]。首先是一个迭代器,它指向匹配文本的开头;结果[1]。第二个是一个迭代器,指向匹配文本的末尾。使用这对迭代器访问匹配中的单个字符。如果您只需要保存匹配文本副本的字符串对象,请使用results[1]。str.

results[1]。首先是指向匹配文本开头的迭代器;结果[1]。第二个是一个迭代器,指向匹配文本的末尾。使用这对迭代器访问匹配中的单个字符。如果您只想要保存匹配文本副本的字符串对象,请使用results[1]。str.

感谢您对第一个和第二个方法的解释,我在搜索时注意到了它们,但没有清楚地掌握它们的ideo。第一个和第二个不是函数;他们是数据成员。感谢对第一种和第二种方法的解释,我在搜索时注意到了他们,但没有清楚地掌握他们的ideo。第一种和第二种不是函数;他们是数据成员。为什么不是std:stoi而不是lexical\u cast?为什么不是std:stoi而不是lexical\u cast?