سؤال

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

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

في C # "i" يصبح، تماما كما أتوقع، 8221 ($ 201D). في 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';

هنا . \ غير معرف ش.

نصائح أخرى

ووفقا ل ويكيبيديا :

<اقتباس فقرة>   

و"عرض wchar_t هو مترجم محددة، ويمكن أن تكون صغيرة مثل 8 بت، وبالتالي فإن البرامج التي تحتاج لتكون محمولة عبر أي C أو مترجم C ++ يجب عدم استخدام wchar_t لتخزين نص Unicode. والمقصود من نوع wchar_t ل تخزين الأحرف واسعة المعرفة من قبل المترجم، والتي قد تكون أحرف Unicode في بعض المجمعين ".

ويجب عدم إجراء أية افتراضات حول كيفية انها تنفذ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top