Получите расчетную длину строки Core Foundation с учетом кодировки.

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

Вопрос

Есть ли способ получить длину в байтах CFString учитывая произвольную кодировку символов?Это кажется возможным, поскольку функция CFStringGetSmallestEncoding уже должен выполнить некоторые вычисления, но я не хочу использовать наименьшую кодировку, я хочу выяснить, какой большой буфер мне может понадобиться выделить, если я хочу, чтобы байты были в кодировке UTF-8 или, возможно, в другой кодировке символов переменной ширины .

Является ли это возможным?Или мне нужно выделить максимально возможный размер буфера, используя CFStringGetMaximumSizeForEncoding?

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

Решение

У вас есть Фонд?Если да, вы можете привести CFStringRef к NSString* и использовать lengthOfBytesUsingEncoding:.

Однако имейте в виду, что CFStringGetMaximumSizeForEncoding имеет значение O(1), тогда как lengthOfBytesUsingEncoding:равна O(n) по длине строки (по сути, вы выполняете преобразование дважды), поэтому вам все равно может быть лучше использовать CFStringGetMaximumSizeForEncoding для выделения буфера.

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