我在UTF8类中表示的C ++ 11中有Unicode字符串。我可以获得Unicode字符数字。如果字符串包含不是基于ASCII的字符(使用变音符号),我该如何检查?
EG。我想检测日语,阿拉伯语,俄语等,但是对于特殊字符,例如德语ü
,捷克语č
,法语î
等我想说,它是“像ASCII一样“
(我不想使用Boost)
答案 0 :(得分:2)
我找到了一个解决方案,使用unicode string normalization并使用Unilib。
我正在通过char迭代字符串char。我的UTF8字符串由TinyUTF8库表示(现在在github上维护)。
utf8_string u8str = u8"\u4e0a\u6d77 Příliš žluťoučký kůň úpěl ďábelské ódy";
for (auto c : u8str){
std::u32string uu;
uu.push_back(c);
ufal::unilib::uninorms::nfd(uu);
if (uu[0] < 128){
//has ASCII base
}
}