سؤال

أنا أستخدم MultiByteToWideChar لتحويل سلسلتي إلى سلسلة.أحاول أولاً الحصول على الحجم المطلوب لخيطي.وفقًا للوثائق، فإن تمرير 0 كوسيطة أخيرة يجب أن ينجز هذا.استخدام MultiByteToWideChar(CP_UTF8, MB_COMPOSITE, str.c_str(), -1, nullptr, 0); تُرجع 0 بالحجم المطلوب للمخزن المؤقت للسلسلة.لقد تحققت من أن str هي سلسلة غير فارغة أيضًا.ما الخطأ الذي أفعله هنا؟

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

المحلول

من وثائق MSDN:

بالنسبة إلى UTF-8 أو صفحة الرموز 54936 (GB18030، بدءًا من نظام التشغيل Windows Vista)، يجب تعيين dwFlags إما على 0 أو MB_ERR_INVALID_CHARS.وإلا، ستفشل الوظيفة مع ERROR_INVALID_FLAGS.

أنت تستخدم CP_UTF8 ولكنك تمرر أيضًا علامة MB_COMPOSITE، ولهذا السبب يفشل.

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