![](/img/trans.png)
[英]boost::regex, match_results::operator[] - Mysterious “sub += 2” line
[英]boost regex error: uninitialzed boost::match_results
運行以下內容時
bool my_compare(const std::string& string_1, const std::string& string_2)
{
const boost::regex str_re("so(m)e_(r)e(g)ex");
boost::smatch str_match;
size_t one;
uint8_t two;
size_t three;
if( boost::regex_search(string_1, str_match, str_re) ) {
one = boost::lexical_cast<size_t>( std::string(str_match[1].first, match[1].second) );
two = boost::lexical_cast<uint8_t>( std::string(str_match[2].first, match[2].second) );
three = boost::lexical_cast<size_t>( std::string(str_match[3].first, match[3].second) );
}
size_t four;
uint8_t five;
size_t six;
if( boost::regex_search(string_1, str_match, str_re) ) {
four = boost::lexical_cast<size_t>( std::string(str_match[1].first, match[1].second) );
five = boost::lexical_cast<uint8_t>( std::string(str_match[2].first, match[2].second) );
six = boost::lexical_cast<size_t>( std::string(str_match[3].first, match[3].second) );
}
return false;
}
int main()
{
my_compare(some_string1, some_string2);
return 0;
}
我收到以下錯誤,我不理解:
拋出'boost :: exception_detail :: clone_impl實例后調用終止
'what():錯誤的詞法轉換:無法將源類型值解釋為目標
"so(m)e_(r)e(g)ex"
此正則表達式將填充捕獲str_match[1]
與所述串"m"
str_match[2]
以字符串"r"
和str_match[3]
以字符串"g"
boost::lexical_cast<size_t>( std::string(str_match[1].first, match[1].second) );
這將嘗試將字符串"m"
轉換為size_t
類型的值,該值將失敗(“ m”不是整數!),並引發異常
'what():錯誤的詞法轉換:無法將源類型值解釋為目標
(順便說一句,您不需要從一對迭代器中使用字符串構造函數跳過這些箍,子匹配項可以直接轉換為字符串)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.