1

我需要将 const_iterator 转换为可以执行 int 和 string 操作的类型。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";

谢谢,乔

4

2 回答 2

4

您可以std::string像这样创建 const 字符串迭代器的匹配结果:

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 );
于 2012-12-19T19:20:52.350 回答
3

results[1].first是一个迭代器,指向匹配文本的开头;results[1].second是一个迭代器,它指向匹配文本的末尾。使用这对迭代器访问匹配中的单个字符。如果您只想要一个包含匹配文本副本的字符串对象,请使用results[1].str().

于 2012-12-19T19:21:54.140 回答