1

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

  • Linux 编译器呢?是否也可以使用 L"" 语法?
  • 如果是,是 C 字符串 linux 宽字符(即 4 字节宽)的字符吗?
  • 是否有一种“交叉编译器”方式来定义 UCS-2 或 UTF-16 编码的 unicode 字符串?

谢谢你。:)

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

4

1 回答 1

1

如果不使用至少 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 };
于 2015-05-11T23:21:10.797 回答