问题遇到的现象和发生背景
在vs2017中使用正则判断是否为中文,使用c++。
用代码块功能插入代码,请勿粘贴截图
string strName =“你好,世界”;
std::regex reg("[\u4E00-\u9FA5]+$");
if (regex_match(strName, reg))
{
cout << " 合法" << endl;
}
else{
cout<<"不合法"<<endl;
}
运行结果及报错内容
输出结果:不合法
我的解答思路和尝试过的方法
1.判断编码格式,发现vs2017默认是gbk,尝试过在高级选项设置中选择utf-8,没有用。
2.尝试在gbk格式下能否判断字符是中文,效果不好,不精确。
解决方法:
只需要将字符串变为utf-8的格式就好了,但注意要将reg也要变为u8格式!
string strName =u8“你好,世界”;
std::regex reg(u8"[\u4E00-\u9FA5]+$");
if (regex_match(strName, reg))
{
cout << " 合法" << endl;
}
else{
cout<<"不合法"<<endl;
}