2010-12-06 88 views
7

這是我的嘗試:boost :: regex_search可以在wstring上完成嗎?

std::wstring extractText(std::wstring line) { 
    std::wstring text; 

    boost::regex exp("^.*?PRIVMSG #.*? :(.+)"); 
    boost::smatch match; 

    if (boost::regex_search(line, match, exp)) { 
       text = std::wstring(match[1].first, match[1].second); 
      } 

    return text; 
    } 
+3

當你嘗試它時發生了什麼? – aschepler 2010-12-06 22:16:58

+0

錯誤C2784:'bool boost :: regex_search(const std :: basic_string &,const boost :: basic_regex &,boost :: regex_constants :: match_flag_type)':無法推導'const boost模板參數:: basic_regex &'from'boost :: smatch' – coolface 2010-12-06 22:22:23

+0

我相信當你使用`std :: wstring`時,你必須使用boost.regex的'w'形式,如`boost :: wregex`和`boost :: wsmatch`。另外,如果您在進行Unicode匹配,請查看以下鏈接:http://www.boost.org/doc/libs/1_45_0/libs/regex/doc/html/boost_regex/unicode.html – birryree 2010-12-06 22:24:56

回答

14

使用wregex和wsmatch

2

我相信是這樣,但你需要使用boost::wsmatch代替smatch,並wregex爲好。