将boost std :: string :: const_iterator转换为string和int c ++

时间:2012-12-19 19:13:06

标签: c++ regex boost casting

我需要将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";

谢谢, 乔

2 个答案:

答案 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()