How to convert UTF-8 std::string to UTF-16 std::wstring?

后端 未结 6 795
挽巷
挽巷 2020-11-29 07:21

If I have a UTF-8 std::string how do I convert it to a UTF-16 std::wstring? Actually, I want to compare two Persian words.

6条回答
  •  攒了一身酷
    2020-11-29 07:46

    To convert between the 2 types, you should use: std::codecvt_utf8_utf16< wchar_t>
    Note the string prefixes I use to define UTF16 (L) and UTF8 (u8).

    #include 
    
    #include 
    
    int main()
    {
    
        std::string original8 = u8"הלו";
    
        std::wstring original16 = L"הלו";
    
        //C++11 format converter
        std::wstring_convert> convert;
    
        //convert to UTF8 and std::string
        std::string utf8NativeString = convert.to_bytes(original16);
    
        std::wstring utf16NativeString = convert.from_bytes(original8);
    
        assert(utf8NativeString == original8);
        assert(utf16NativeString == original16);
    
        return 0;
    }
    

提交回复
热议问题