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字符“。

您不应该做出它是如何实现的任何假设。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top