VC6 非UNICODE环境。今天遇到这个问题,易语言 却没有问题(易语言是 ANSI 编码) ,百般折腾,无果。百度搜解决方案
遇到此贴
百度只此一贴。度娘也没结果。
最终只好用 易语言编译一个 程序让后把他 逆了。跟踪看看怎么实现的。
跟进去 之后发现 其实是在函数内部进行了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);
}