gpt4 book ai didi

c++ - Unicode 字符串文字

转载 作者:IT老高 更新时间:2023-10-28 23:01:02 27 4
gpt4 key购买 nike

C++11 引入了一组新的字符串字面前缀(甚至允许用户定义后缀)。最重要的是,您可以直接使用 Unicode 转义序列对某个符号进行编码,而不必担心编码问题。

const char16_t* s16 = u"\u00DA";
const char32_t* s32 = U"\u00DA";

但是我也可以在 wchar_t 字符串文字中使用 unicode 转义序列吗?如果这是不可能的,这似乎是一个缺陷。

const wchar_t* sw = L"\u00DA";

sw[0] 的整数值当然取决于特定平台上的 wchar_t 是什么,但对于所有其他效果,这应该是可移植的,不?

最佳答案

它可以工作,但它可能没有所需的语义。 \u00DA 将扩展为 UTF8/16/32 编码所需的尽可能多的目标字符,具体取决于 wchar_t 的大小,但请记住,宽字符串没有任何记录在案的、有保证的编码语义——它们只是“系统的编码”,没有试图说出那是什么,或者要求用户知道那是什么。

所以最好不要混搭。使用两者之一,但不能同时使用两者:

  1. 系统特定:char*/"", wchar_t*/L"" , \x-literals, mbstowcs/wcstombs

  2. Unicode:char*/u8"", char16_t*/u"", char32_t*/U"", \u/\U 文字。

(这里是我关于这个主题的 some related questions。)

关于c++ - Unicode 字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7636797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com