代码之家  ›  专栏  ›  技术社区  ›  spraff

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

  •  1
  • spraff  · 技术社区  · 6 年前

    本质上,我想检查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)
    

    语言 以及编码。

    我的琴弦可以是英语,法语,日语,随便什么。

    任何 语言?

    0 回复  |  直到 6 年前