C#与C ++ / CLI中的Unicode字符串文字
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
你要:
wchar_t z = L'\x201D';
从这里 。 \ u未定义。
根据维基百科 :
“
wchar_t
的宽度是特定于编译器的,可以小到8位。因此,需要可以在任何C或C ++编译器上移植的程序不应使用wchar_t来存储Unicode文本.wchar_t类型用于存储编译器 -定义了宽字符,在某些编译器中可能是Unicode字符。“
你不应该对它的实现方式做任何假设。