Unicode-Zeichenketten in C # vs C ++ / CLI
-
22-07-2019 - |
Frage
C#:
char z = '\u201D';
int i = (int)z;
C++/CLI:
wchar_t z = '\u201D';
int i = (int)z;
In C # "i
" wird, so wie ich erwarte, 8221 ($ 201D). In C ++ / CLI auf der anderen Seite wird es 65.428 ($ FF94). Kann eine Art Seele mir dies erklären?
Bearbeiten : Größe wchar_t
kann hier nicht von Problem sein, denn:
C++/CLI:
wchar_t z = (wchar_t)8221;
int i = (int)z;
Auch hier wird i
8221, so wchar_t
ist in der Tat bis zum Spiel eines 16-Bit-Integer auf meinem System zu halten. Ekeforshus
Lösung
Andere Tipps
Nach wikipedia :
"Die Breite
wchar_t
ist Compiler-spezifisch und kann so klein wie 8 Bits sein. Folglich Programme, die über eine beliebige C oder C ++ Compiler tragbar sein müssen, sollte nicht Unicode-Text verwenden Wchar_t zum Speichern. Der Wchar_t Typ für gedacht Speicher Compiler definierte breite Zeichen, die in einigen Compilern Unicode-Zeichen sein. "
Sie sollten keine Annahmen darüber, wie es umgesetzt werden.