C++ 检查 UTF8 字符串包含指定的字符

c++ check utf8 string contain specified characters

本文关键字:字符 包含指 字符串 检查 UTF8 C++      更新时间:2023-10-16

给定一个utf8字符串,如何知道它包含不允许的指定字符?

要求是utf8字符串只能包含英文字符和中文字符。任何其他字符,如符号、数字、空格、'' ...是不允许的。

剂量标准::正则表达式可以做这项工作吗?

bool legal(const std::string& s) { // s is utf8 string
//??
}

您可以将std::string转换为 utf32 码位的向量(如此处所述(,然后迭代它们并检查范围(但是我无法提供中文字母的 utf32 值范围,并且从对您的问题的评论来看,这实际上可能是一个问题(。

编辑

如下面的评论中所述,如果您知道需要验证的字符在 2 字节范围内,则可以坚持使用 utf16。