C++中DEELX匹配中文

来源:互联网 发布:中差评拦截软件 编辑:程序博客网 时间:2024/06/07 03:50

VC6 非UNICODE环境。今天遇到这个问题,易语言 却没有问题(易语言是 ANSI 编码) ,百般折腾,无果。百度搜解决方案
遇到此贴

http://bbs.csdn.net/topics/390921030#new_post

百度只此一贴。度娘也没结果。
最终只好用 易语言编译一个 程序让后把他 逆了。跟踪看看怎么实现的。
跟进去 之后发现 其实是在函数内部进行了ANSI到 UNICODE 的转换。然后在进行 匹配。
VC 代码 部分 改为 UNICODE宽字符,一试果然。
献丑代码(测试通过):

    wchar_t *buf=L"aa呵呵哒gnoksdg";    wchar_t su[256] ={0};    // 表达式对象    CRegexpT <wchar_t> re(L"[\\u4e00-\\u9fa5]+", IGNORECASE | GLOBAL | MULTILINE);    // 查找结果    MatchResult result = re.Match(buf);    // 是否找到匹配    if( result.IsMatched() )    {        int beginPos    = result.GetStart();        int endPos      = result.GetEnd();        wcsncat(su,buf+beginPos,endPos-beginPos);        MessageBoxW(NULL,su,L"A",MB_OK);    }

测试结果

原创粉丝点击