簡體   English   中英

boost regex錯誤:未初始化的boost :: match_results

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM