相关疑难解决方法(0)

C++ 0x中的新unicode字符

我正在建立一个允许我以各种编码方式获取字符串的API,包括utf8,utf16,utf32和wchar_t(根据操作系统可能是utf32或utf16).

  1. 新的C++标准已推出了新的类型char16_t,并char32_t没有这个的sizeof歧义,应在今后的使用,所以我想支持他们为好,但问题是,它们会干扰正常的uint16_t,uint32_t,wchar_t类型不允许超载,因为他们可以指同一类型?

    class some_class {
    public:
        void set(std::string); // utf8 string
        void set(std::wstring); // wchar string utf16 or utf32 according
                                 // to sizeof(wchar_t)
        void set(std::basic_string<uint16_t>)
                             // wchar independent utf16 string
        void set(std::basic_string<uint32_t>);
                             // wchar independent utf32 string
    
    #ifdef HAVE_NEW_UNICODE_CHARRECTERS
        void set(std::basic_string<char16_t>)
                             // new standard utf16 string
        void set(std::basic_string<char32_t>);
                             // new standard utf32 string
    #endif
    };
    
    Run Code Online (Sandbox Code Playgroud)

    所以我可以写:

    foo.set(U"Some utf32 String");
    foo.set(u"Some utf16 string");
    
    Run Code Online (Sandbox Code Playgroud)
  2. 什么是typedef的std::basic_string<char16_t>std::basic_string<char32_t>今天有:

    typedef …
    Run Code Online (Sandbox Code Playgroud)

c++ unicode c++11 char16-t char32-t

25
推荐指数
1
解决办法
5743
查看次数

标签 统计

c++ ×1

c++11 ×1

char16-t ×1

char32-t ×1

unicode ×1