string,wstring,u 16 string,u 32 string相互変換

1753 ワード

目次
1.各種符号化フォーマット
参照先:
C++中国語の文字化けしの問題に対して
1.各種符号化フォーマット
  • 中国語オペレーティングシステムデフォルトansi符号化
  • 国や地域によって基準が異なり、GB 2312、GBK、GB 18030、Big 5、Shift_が生まれたJIS等それぞれの符号化基準.これらは、1文字を表すために複数のバイトを使用する様々な漢字延長符号化方式であり、ANSI符号化と呼ばれる.簡体字中国語Windowsオペレーティングシステムでは、ANSI符号化はGBK符号化を表す.繁体字中国語Windowsオペレーティングシステムでは、ANSI符号化はBig 5を表す.日本語Windowsオペレーティングシステムにおいて、ANSI符号化はShift_を表すJISコード.
    ANSI符号化は、英語の文字を1バイト、中国語を2バイトまたは4バイトで表す.
    Unicodeは国際共通符号化各アルファベットまたは漢字は2バイトです
    utf-8符号化はunicode符号化がネットワーク間(主にウェブページ)で伝送される際の「トランスミッション」および「ブリッジ」符号化である.英語のアルファベットは1バイト、中国語は3バイトで、中国語を処理するのは不便で、stringをu 16 stringに変えると各アルファベットや漢字が2バイトで、処理するのが便利です.
     
    #include 
    #include 
    #include 
    #include 
     
    std::u16string to_utf16( std::string str ) // utf-8 to utf16
    { return std::wstring_convert, char16_t >{}.from_bytes(str); }
     
    std::string to_utf8( std::u16string str16 )
    { return std::wstring_convert, char16_t >{}.to_bytes(str16); }
     
    std::u32string to_utf32( std::string str )
    { return std::wstring_convert, char32_t >{}.from_bytes(str); }
     
    std::string to_utf8( std::u32string str32 )
    { return std::wstring_convert, char32_t >{}.to_bytes(str32); }
     
    std::wstring to_wchar_t( std::string str )
    { return std::wstring_convert, wchar_t >{}.from_bytes(str); }
     
    std::string to_utf8( std::wstring wstr )
    { return std::wstring_convert, wchar_t >{}.to_bytes(wstr); }
     
    int main()
    {
        const std::string utf8 = "hello world!
    " ;     const std::u16string utf16 = to_utf16( utf8 ) ;     std::cout <

    参照先:
  • https://blog.csdn.net/forest_fire/article/details/81011090
  • https://blog.csdn.net/weixin_34396103/article/details/92366595