Вопрос

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

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

В C # " i " становится, как я и ожидал, 8221 ($ 201). В C ++ / CLI, с другой стороны, он становится 65428 ($ FF94). Может ли какая-то добрая душа объяснить это мне?

РЕДАКТИРОВАТЬ : размер wchar_t здесь не может быть проблемой, поскольку:

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

Здесь также i становится 8221, поэтому wchar_t действительно подходит для игры с 16-разрядным целым числом в моей системе. Ekeforshus

Это было полезно?

Решение

Вы хотите:

wchar_t z = L'\x201D';

из здесь . \ u не определено.

Другие советы

Согласно Википедии :

  

" ширина wchar_t зависит от компилятора и может составлять до 8 бит. Следовательно, программы, которые должны быть переносимы на любой компилятор C или C ++, не должны использовать wchar_t для хранения текста Unicode. Тип wchar_t предназначен для хранения широких символов, определенных компилятором, которые могут быть символами Unicode в некоторых компиляторах. & Quot;

Вы не должны делать никаких предположений о том, как это реализовано.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top