كيفية حساب طول سلسلة UCS-2 وحجمها في C ++؟
سؤال
لدي سلسلة في UCS-2 التشفير. أحتاج إلى نسخ هذه السلسلة إلى سلسلة أخرى UCS-2. قبل النسخ ، أحتاج إلى حساب طول سلسلة UCS-2 لتخصيص MEMEORY.
كيفية حساب طول سلسلة UCS-2؟
المحلول
UCS2 لا يحمل معلومات حول طول السلسلة نفسها. تمثيل السلسلة الأصلي إما هو إنهاء 0 ، وفي هذه الحالة يمكنك فقط التحقق من وحدة رمز 0 (أي قيمة 16 بت 0) ، أو أنه لم يتم إنهاء 0 ، وفي هذه الحالة تحتاج إلى بعض-خارج- معلومات النطاق حول طول السلسلة (مثل حجم المخزن المؤقت المخزن بشكل منفصل).
بشكل عام ، UCS 2 هي مجموعة فرعية من UTF-16 (http://www.unicode.org/faq/basic_q.html#14). وبالتالي ، يجب أن تكون على ما يرام مع أدوات UTF-16 ، مثل مكتبة وحدة العناية المركزة http://site.icu-project.org/.
نصائح أخرى
هذا يعتمد على نوع السلسلة الذي تستخدمه. إذا لم يكن هناك نوع (مجرد مخزن مؤقت للذاكرة معروف أنه يحتوي على سلسلة في ترميز UCS-2) ، فيجب أن تعرف كيف تم تمثيله. يمكن أن يكون له عدد الطول مسبقًا ، أو يتم إنهاء 0 تمامًا مثل القديم العادي char *
"C سلاسل".