在 Visual Studio 源代码定义的字符串下,如L"abc"
result 为具有 2 字节宽字符的 C 字符串。
- Linux 编译器呢?是否也可以使用 L"" 语法?
- 如果是,是 C 字符串 linux 宽字符(即 4 字节宽)的字符吗?
- 是否有一种“交叉编译器”方式来定义 UCS-2 或 UTF-16 编码的 unicode 字符串?
谢谢你。:)
编辑:忘了提到我不能使用 C++11。
如果不使用至少 C11 或 C++11(您可以在其中使用u"..."
),没有跨平台的方法可以方便地编写 UTF-16 字符串文字。
宽字符串语法 ( )使用实现定义的编码L"..."
创建一个。const wchar_t*
在 Windows 上,此编码为 UTF-16;对于 GCC(使用 GNU 的 libc),这种编码是 UTF-32。
创建 UTF-16 或任何 UTF 字符串(C11/C++11 之前)的唯一安全且可移植的方法是将它们写为整数数组。例如:
const uint16_t str[] = { 0x24EA, 0x0 };