一千萬個為什麽

搜索

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)。某種靈魂可以向我解釋這個嗎?

EDIT: Size of wchar_t can not be of issue here, because:

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

Here too, i becomes 8221, so wchar_t is indeed up to the game of holding a 16-bit integer on my system. Ekeforshus

最佳答案

你要:

wchar_t z = L'\x201D';

此處。 \ u是未定義的。

轉載註明原文: C#與C ++/CLI中的Unicode字符串文字