如何确定UTF-8字符串中任何语言的std :: isgraph?

时间:2019-01-18 10:05:07

标签: c++ utf-8 character-encoding locale

我正在研究字符串编码和语言环境。噢,快乐!

基本上,我想检查UTF-8字符串中的每个字符是否都是图形字符,例如isgraph,但要检查所有Unicode字符。

这是我到目前为止建立的,但是我不知道如何将其组合在一起。

我相信将UTF-8转换为UTF-32是最通用的解决方案,它看起来像这样:

template<class Facet>

struct deletable_facet : Facet
{
    template<class ...Args>
    deletable_facet (Args&& ...args) : Facet (std::forward<Args> (args)...) {}
};

std::wstring_convert<deletable_facet<std::codecvt<char32_t, char, std::mbstate_t>>, char32_t> conv32;

std::u32string str32 = conv32.from_bytes (data)

但是isgraph的示例并没有使我充满信心:

std::locale loc2 ("en_US.UTF-8");
std::isgraph (c, loc2)

文档说字符串参数是“特定于操作系统”的。该示例还建议我需要指定一种语言以及一种编码。

我的字符串可能是英语,法语,日语,等等。

如何确定UTF-8字符串中的字符是任何语言的图形化显示?

0 个答案:

没有答案