Строковые литералы Unicode в C # против C ++ / CLI
-
22-07-2019 - |
Вопрос
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
зависит от компилятора и может составлять до 8 бит. Следовательно, программы, которые должны быть переносимы на любой компилятор C или C ++, не должны использовать wchar_t для хранения текста Unicode. Тип wchar_t предназначен для хранения широких символов, определенных компилятором, которые могут быть символами Unicode в некоторых компиляторах. & Quot;
Вы не должны делать никаких предположений о том, как это реализовано.