Как рассчитать длину строки UCS-2 и ее размер в C ++? - PullRequest
0 голосов
/ 18 февраля 2010

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

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

Ответы [ 2 ]

2 голосов
/ 18 февраля 2010

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 / .

1 голос
/ 18 февраля 2010

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

...