質問

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 ++コンパイラ間で移植性が必要なプログラムでは、Unicodeテキストの格納にwchar_tを使用しないでください。 wchar_t型は、コンパイラーによって定義されたワイド文字(一部のコンパイラーではUnicode文字である場合があります)を格納するためのものです。

実装方法について想定してはいけません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top