c ++检查utf8字符串包含指定的字符

时间:2017-07-20 08:50:21

标签: c++ utf-8

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

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

Dose std :: regex可以做这个工作吗?

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

1 个答案:

答案 0 :(得分:1)

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

修改

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