rub*_*nvb 13 c++ unicode string-literals c++11 unicode-literals
C++ 11引入了一组新的字符串文字前缀(甚至允许用户定义的后缀).除此之外,您可以直接使用Unicode转义序列来编码某个符号,而无需担心编码.
const char16_t* s16 = u"\u00DA";
const char32_t* s32 = U"\u00DA";
Run Code Online (Sandbox Code Playgroud)
但是我可以在wchar_t
字符串文字中使用unicode转义序列吗?如果不可能,这似乎是一个缺陷.
const wchar_t* sw = L"\u00DA";
Run Code Online (Sandbox Code Playgroud)
will的整数值sw[0]
当然取决于wchar_t
特定平台上的内容,但对于所有其他效果,这应该是可移植的,不是吗?
Ker*_* SB 10
它会工作,但它可能没有所需的语义.\u00DA
将扩展为UTF8/16/32编码所需的尽可能多的目标字符,具体取决于大小wchar_t
,但请记住,宽字符串没有任何记录的,保证编码语义 - 它们只是"系统的编码" ,没有试图说出那是什么,或要求用户知道那是什么.
所以最好不要混合搭配.使用两者中的任何一个,但不是两个:
系统特定的:char*
/ ""
,wchar_t*
/ L""
,- \x
literals,mbstowcs
/wcstombs
Unicode:char*
/ u8""
,char16_t*
/ u""
,char32_t*
/ U""
,\u
/ \U
literals.
归档时间: |
|
查看次数: |
13244 次 |
最近记录: |