chenxhyt 2022-11-16 13:54 采纳率: 0%
浏览 11

在vs2017中使用正则判断是否为中文,使用c++。

问题遇到的现象和发生背景

在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;
}

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-16 17:00
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 11月16日