将Boost STD :: String :: const_iterator转换为字符串和INT C

Converting boost std::string::const_iterator to string and int c++

本文关键字:字符串 转换 INT STD Boost String const iterator      更新时间:2023-10-16

我需要将const_iterator转换为可以进行int和字符串操作的类型。结果[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";

谢谢乔

您可以从类似的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 );

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