C#与C ++ / CLI中的Unicode字符串文字

时间:2009-12-01 14:12:22

标签: c# unicode c++-cli unicode-literals

C#:
char z = '\u201D';
int i = (int)z;

C++/CLI:
wchar_t z = '\u201D';
int i = (int)z;

在C#中,“i”就像我预期的那样变成8221($ 201D)。另一方面,在C ++ / CLI中,它变为65428($ FF94)。有些灵魂会向我解释这个吗?

编辑:此处wchar_t的大小无法解决,因为:

C++/CLI:
wchar_t z = (wchar_t)8221;
int i = (int)z;

同样,i变为8221,所以wchar_t确实取决于在我的系统上保持16位整数的游戏。 Ekeforshus

2 个答案:

答案 0 :(得分:4)

你想:

wchar_t z = L'\x201D';
来自here

。 \ u未定义。

答案 1 :(得分:0)

根据wikipedia

  

wchar_t的宽度是特定于编译器的,可以小到8位。因此,需要在任何C或C ++编译器上移植的程序不应使用wchar_t来存储Unicode文本.wchar_t type用于存储编译器定义的宽字符,在某些编译器中可能是Unicode字符。“

你不应该对它的实施方式做任何假设。