在VS2015上,實驗結果表明:
(1)char16_t
一個char16_t只能保存2字節,所以只能用0000~ffff范圍內的字符對其進行初始化或賦值,使用比0000 ffff大的編碼,直接報錯
二進制打印出char16_t的值,嚴格等於utf16編碼,在這個范圍內,也就是嚴格等於unicode編碼
(2)u16string
復制一個unicode字符構造一個unicode字符串,用來初始化u16string:
u16string ss(u"X");
如果X在0000~ffff范圍內,最終ss會包含兩個char16_t,ss[0]嚴格等於X的unicode編碼,ss[1]為終結符001C
如果X在ffff以上的范圍內,最終ss會包含兩個char16_t,嚴格等於上面UTF-16編碼轉換后的4字節
char32_t&u32string
u32string是按照UTF32編碼來保存字符的,也就是完全和unicode編碼一一對應,,每個字符用32bits來保存
(1)char32_t
一個char32_t四個字節,可以保存所有的unicode字符。但是要注意初始化時,字符常量前要用U
(2)u32string
對於u32string ss(U“你”); ss有兩個元素,ss[0]為"你"的unicode編碼,ss[1]為0000001c
原文鏈接:https://blog.csdn.net/tang05505622334/article/details/78638839
