Question

C#:
char z = '\u201D';
int i = (int)z;

C++/CLI:
wchar_t z = '\u201D';
int i = (int)z;

En C # " i " devient, comme je l’espère, 8221 (201 D). En C ++ / CLI, par contre, il devient 65428 ($ FF94). Une bonne âme peut-elle m'expliquer cela?

EDIT : la taille de wchar_t ne peut pas être en cause ici, car:

C++/CLI:
wchar_t z = (wchar_t)8221;
int i = (int)z;

Ici aussi, i devient 8221, de sorte que wchar_t est effectivement prêt à contenir un entier de 16 bits sur mon système. Ekeforshus

Était-ce utile?

La solution

Vous voulez:

wchar_t z = L'\x201D';

à partir de ici . \ u n'est pas défini.

Autres conseils

Selon wikipedia :

  

" La largeur de wchar_t est spécifique au compilateur et peut être aussi petite que 8 bits. Par conséquent, les programmes devant être portables sur un compilateur C ou C ++ ne doivent pas utiliser wchar_t pour stocker du texte Unicode. Le type wchar_t est destiné à stocker les caractères larges définis par le compilateur, qui peuvent être des caractères Unicode dans certains compilateurs. "

Vous ne devriez pas émettre d'hypothèses sur la façon dont cela est mis en œuvre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top