Letterali stringa Unicode in C # vs C ++ / CLI
-
22-07-2019 - |
Domanda
C#:
char z = '\u201D';
int i = (int)z;
C++/CLI:
wchar_t z = '\u201D';
int i = (int)z;
In C # " i
" diventa, proprio come mi aspetto, 8221 ($ 201D). In C ++ / CLI, invece, diventa 65428 ($ FF94). Qualche anima gentile può spiegarmelo?
MODIFICA : la dimensione di wchar_t
non può essere un problema qui, perché:
C++/CLI:
wchar_t z = (wchar_t)8221;
int i = (int)z;
Anche qui i
diventa 8221, quindi wchar_t
è davvero all'altezza del gioco di contenere un numero intero a 16 bit sul mio sistema. Ekeforshus
Soluzione
Altri suggerimenti
Secondo wikipedia :
" La larghezza di
wchar_t
è specifica del compilatore e può essere piccola fino a 8 bit. Di conseguenza, i programmi che devono essere portatili su qualsiasi compilatore C o C ++ non dovrebbero usare wchar_t per la memorizzazione del testo Unicode. Il tipo wchar_t è destinato alla memorizzazione di caratteri ampi definiti dal compilatore, che possono essere caratteri Unicode in alcuni compilatori. & Quot;
Non dovresti fare ipotesi su come sia implementato.