Как рассчитать длину строки UCS-2 и ее размер в C++?
Вопрос
у меня есть строка УКС-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 *
«Струны до».