1
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:サイズはwchar_tここでは問題になりません。理由は次のとおりです。

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

ここでもi8221 になるのでwchar_t、私のシステムで 16 ビット整数を保持するゲーム次第です。エケフォルシュス

4

2 に答える 2

4

あなたがしたい:

wchar_t z = L'\x201D';

ここから。\u は定義されていません。

于 2009-12-01T15:05:32.097 に答える
0

ウィキペディアによると:

「の幅wchar_tはコンパイラ固有であり、8 ビットまで小さくすることができます。したがって、C または C++ コンパイラ間で移植可能にする必要があるプログラムは、Unicode テキストの格納に wchar_t を使用しないでください。wchar_t 型は、コンパイラ定義の格納を目的としています。一部のコンパイラでは Unicode 文字である可能性があるワイド文字。」

それがどのように実装されているかについて、いかなる仮定もすべきではありません。

于 2009-12-01T14:16:27.620 に答える