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

War es hilfreich?

Lösung

Sie mögen:

wchar_t z = L'\x201D';

hier . \ U ist nicht definiert.

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top