给定一个utf8字符串,如何知道它包含不允许的指定字符?
需求是utf8字符串只能包含英文字符和中文字符。任何其他字符,如符号,数字,空格,'\ n'......都是不被允许的。
Dose std :: regex可以做这个工作吗?
bool legal(const std::string& s) { // s is utf8 string
//??
}
答案 0 :(得分:1)
您可以将std::string
转换为utf32代码点的向量(如here所述),然后迭代它们并检查范围(但是我无法为中文字母和判断提供utf32值范围从您对问题的评论中可能实际上是一个问题。)
修改强>
如下面的评论中所述,如果您知道需要验证的字符属于2字节范围,则可以使用utf16。