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

È stato utile?

Soluzione

Desideri:

wchar_t z = L'\x201D';

da qui . \ u non è definito.

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top