源代码定义宽字符字符串和跨平台

Source code defined wide char strings and cross-platform

在 Visual Studio 下,源代码定义的字符串,如 L"abc" 会生成具有 2 个字节宽字符的 C 字符串。

谢谢。 :)

编辑:忘了说我不能使用 C++11。

如果不至少使用 C11 或 C++11(您可以在其中使用 u"..."),就无法方便地编写 UTF-16 字符串文字。

宽字符串语法 (L"...") 使用实现定义的编码创建 const wchar_t*。在Windows上,这个编码是UTF-16;使用 GCC(使用 GNU 的 libc),此编码为 UTF-32。

创建 UTF-16 或任何 UTF 字符串 (pre-C11/C++11) 的唯一安全且可移植的方法是将它们写入整数数组。例如:

const uint16_t str[] = { 0x24EA, 0x0 };