C++ 11引入了一組新的字符串文字前綴(甚至允許用戶定義的後綴)。最重要的是,您可以直接使用Unicode轉義序列來編碼某個符號,而不必擔心編碼。Unicode字符串文字
const char16_t* s16 = u"\u00DA";
const char32_t* s32 = U"\u00DA";
但我可以使用Unicode轉義序列wchar_t
字符串文字呢?如果這不可能,這似乎是一個缺陷。
const wchar_t* sw = L"\u00DA";
的sw[0]
整數值當然會依靠什麼wchar_t
是在特定平臺上,但所有其他的效果,這應該是便攜式的,不是嗎?
相信SW的'值[0]'取決於什麼'wchar_t'是在特定平臺上只的程度'wchar_t'的大小是多少。即'\ u00DA'應該總是會導致U + 00DA的一些Unicode編碼(UTF-8,UTF-16,UTF-32),即使這不是該類型的平臺的正常編碼。 – bames53
其實以上是不正確的。實現應該將通用字符名稱視爲文字字符。因此,如果實現將字符串文字中的字符轉換爲執行字符集,那麼它也應該使用UCN執行此操作。如果UCN位於unicode字面內(例如,u8「\ u00DA」),則只保證UTF編碼。 – bames53