C#とC ++ / CLIのUnicode文字列リテラル
-
22-07-2019 - |
質問
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
の幅はコンパイラ固有であり、最小で8ビットです。したがって、CまたはC ++コンパイラ間で移植性が必要なプログラムでは、Unicodeテキストの格納にwchar_tを使用しないでください。 wchar_t型は、コンパイラーによって定義されたワイド文字(一部のコンパイラーではUnicode文字である場合があります)を格納するためのものです。
実装方法について想定してはいけません。
所属していません StackOverflow