كيفية حساب طول سلسلة UCS-2 وحجمها في C ++؟

StackOverflow https://stackoverflow.com/questions/2287621

  •  21-09-2019
  •  | 
  •  

سؤال

لدي سلسلة في 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 سلاسل".

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