boost正则表达式求助

ComputerFresh 2012-06-14 02:42:53
想写个判断字符串的正则表达式:中文、英文字母、下划线的组合,用的是c++,boost的正则表达式库。那边厢java写的
String name_pt = "^[A-Za-z0-9_\u4e00-\u9fa5]+$";
可以正确判断,但boost就说不匹配
std::string name_pt = "^[A-Za-z0-9_\u4e00-\u9fa5]+$";//英文字母、数字、下划线组合
std::string userName = std::string(this->et_userName->GetValue().mb_str());
bool flag = boost::regex_match(userName, name_exp)

flag总为false。正确的字符串例如:用户名、用户名_、用户名_adc。请问是不是编码问题呢?我一直在怀疑这个,因为我用了几个正则表达式的测试器,都是匹配的。
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ComputerFresh 2012-06-15
  • 打赏
  • 举报
回复
解决了,是用宽字符处理

boost::wregex wsname_pt(L"(^[A-Za-z0-9_\u4e00-\u9fa5]+$)");//宽字符 英文字母、数字、下划线、中文组合
std::wstring wsUserName = this->et_userName->GetValue().ToStdWstring();
bool flag = boost::regex_match(wsUserName, wsname_pt);
ComputerFresh 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

处理中文得用宽字符版本吧。
[/Quote]

即系如何?wchar_t*吗?我是C++新手,特别对字符编码不熟,界面是wxWidgets做的
赵4老师 2012-06-14
  • 打赏
  • 举报
回复
处理中文得用宽字符版本吧。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧