سؤال

لدي رسالة XML واسعة الحجم التي أحتاج إلى إرسال مقبس Win32 في C ++.

TCHAR wszBuffer[1024];

هل علي أن sprintf(szSendBuffer, "%S", wszBuffer) المخزن المؤقت للشخصية الواسعة إلى أ char صفيف قبل إرساله؟

ما هي الطريقة الصحيحة لإرسال هذا؟

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

المحلول

تمرير WszBuffer مباشرة إلى وظيفة المقبس ، ويلقيها إلى char * ، مع الطول = sizeof (wszbuffer) ، أو 1024 * sizeof (tchar). في هذه الحالة ، سيتم إرسال المخزن المؤقت كما هو.

إذا كنت ترغب في إرسال هذا النص كسلسلة ANSI ، قم بتحويله بواسطة أي وظيفة تحويل السلسلة. Sprintf على ما يرام ، طريقة أخرى هي W2A. ولكن قد تضيع بعض المعلومات.

نصائح أخرى

نظرًا لأنك تتعامل مع XML ، فأنت بحاجة إلى تشفيرها في UTF-8 أو غيرها من ترميز حرف XML (وتحديد هذا الترميز في مقدمة XML) قبل إرساله عبر المقبس.

يستخدم WideCharToMultiByte لتحويله إلى UTF-8 (أو أي شيء آخر char-الترميز المستند إلى ، طالما كنت تعلن ذلك في ملف XML).

يمكنك ببساطة إلقاءها على شار*. على الطرف الآخر ، يمكنك ببساطة إلقاء المخزن المؤقت المستلم إلى WCHAR_T*.

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