Pregunta

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

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

En C # " i " se convierte, como esperaba, en 8221 ($ 201D). En C ++ / CLI, por otro lado, se convierte en 65428 ($ FF94). ¿Puede un alma amable explicarme esto?

EDITAR : El tamaño de wchar_t no puede ser un problema aquí, porque:

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

Aquí también, i se convierte en 8221, por lo que wchar_t depende del juego de mantener un entero de 16 bits en mi sistema. Ekeforshus

¿Fue útil?

Solución

Quieres:

wchar_t z = L'\x201D';

de aquí . \ u no está definido.

Otros consejos

Según wikipedia :

  

" El ancho de wchar_t es específico del compilador y puede ser tan pequeño como 8 bits. En consecuencia, los programas que necesitan ser portables en cualquier compilador de C o C ++ no deben usar wchar_t para almacenar texto Unicode. El tipo wchar_t está destinado a almacenar caracteres anchos definidos por el compilador, que pueden ser caracteres Unicode en algunos compiladores. & Quot;

No debe hacer suposiciones sobre cómo se implementa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top