سؤال

وأنا تطوير برنامج MFC في ظل ويندوز CE. ومن يونيكود بشكل افتراضي. يمكنني استخدام TRACE لطباعة بعض الرسائل مثل هذا

TRACE(TEXT("Hey! we got a problem!\n"));

وأنه يعمل بشكل جيد إذا كان كل شيء يونيكود. ولكن مع ذلك، حصلت على بعض سلسلة أسكي للطباعة. على سبيل المثال:

// open the serial port
m_Context = CreateFile(TEXT("COM1:"), ...);
int rc = ReadFile(m_Context, buffer, 1, cBytes, NULL);
// Oops!! We got a problem, because we can't print a non-unicode string
TRACE(TEXT("Read data: %s\n"), buffer);

وقرأت السلسلة من خلال COM1 من وحدة GPS. أن ترسل نص من هذا القبيل "$ GPSGGA، 1،2،3،4". يتم ترميز أنهم جميعا مع ASCII. أريد أن طباعتها مع TRACE، كيف يمكنني أن أفعل؟

وشكرا.

هل كانت مفيدة؟

المحلول

استخدم "%hs" لتهيئة وسيطة سلسلة الضيقة، شريطة أن لا تبالي صفحة الرموز. انظر، على سبيل المثال، هذه الصفحة ل وصف محددات الشكل.

نصائح أخرى

في ويندوز و"٪ S" شكل محدد (رأس المال 'S') وتنسيق سلسلة هذا هو "العكس" من الإنشاء. في بناء UNICODE انها سوف نتوقع ANSI / MBCS سلسلة وغير UNICODE-يبني انها سوف نتوقع حجة UNICODE.

وأنا لست 100٪ متأكد من أن هذا سيعمل على CE، ولكن الأعمال التالية على سطح المكتب (لبناء UNICODE):

TRACE( TEXT("Unicode string: \"%s\", ASCII string: \"%S\""), L"unicode", "ascii");

ويجب أن تعمل طالما أن النص استردادها هو حقا ASCII في نطاق 0-127، وترميز Unicode هو UTF-8. وقد اعتمدت يونيكود نطاق ASCII أقل، وذلك باستخدام نفس النقاط التعليمات البرمجية.

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