Как рассчитать длину строки UCS-2 и ее размер в C++?

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

  •  21-09-2019
  •  | 
  •  

Вопрос

у меня есть строка УКС-2 кодировка.Мне нужно скопировать эту строку в другую строку UCS-2.Перед копированием мне нужно вычислить длину строки UCS-2 для выделения памяти.

Как рассчитать длину строки UCS-2?

Это было полезно?

Решение

UCS2 сам по себе не несет информации о длине строки.Ваше исходное строковое представление либо заканчивается 0, и в этом случае вы можете просто проверить единицу кода 0 (т.16-битное значение 0), или оно не заканчивается 0, и в этом случае вам нужна некоторая внеполосная информация о длине строки (например, отдельно сохраненный размер буфера).

В общем, UCS 2 — это подмножество UTF-16 (http://www.unicode.org/faq/basic_q.html#14).Следовательно, у вас должно быть все в порядке с инструментами UTF-16, такими как библиотека ICU. http://site.icu-project.org/.

Другие советы

Это зависит от типа строки, которую вы используете.Если типа нет (только буфер памяти, который, как известно, содержит строку в кодировке UCS-2), вам необходимо знать, как он был представлен.Он может иметь добавленный счетчик длины или завершаться нулем, как в старые добрые времена. char * «Струны до».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top