我需要将const_iterator转换为我可以执行int和字符串操作的类型。 results [1]包含我需要使用的regex_search中的文本。 我已经花了几个小时尝试投入可行的格式,但没有成功......
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";
谢谢, 乔
答案 0 :(得分:4)
您可以使用这样的const字符串迭代器的匹配结果创建std::string
:
std::string result_string( results[1].first, results[1].second );
......或简单地说:
std::string result_string = results[1].str();
您可以将字符串强制转换为int
,如下所示:
int result_int = boost::lexical_cast< int >( result_string );
......或者,正如 @Jonathan Wakely 所指出的,如果你使用 C ++ 11 :
int result_int = std::stoi( result_string );
答案 1 :(得分:3)
results[1].first
是一个迭代器,指向匹配的文本的开头; results[1].second
是一个迭代器,它指向匹配的文本的末尾。使用这对迭代器访问匹配中的单个字符。如果您只想要一个包含匹配文本副本的字符串对象,请使用results[1].str()
。