Получите расчетную длину строки Core Foundation с учетом кодировки.
-
22-08-2019 - |
Вопрос
Есть ли способ получить длину в байтах CFString
учитывая произвольную кодировку символов?Это кажется возможным, поскольку функция CFStringGetSmallestEncoding
уже должен выполнить некоторые вычисления, но я не хочу использовать наименьшую кодировку, я хочу выяснить, какой большой буфер мне может понадобиться выделить, если я хочу, чтобы байты были в кодировке UTF-8 или, возможно, в другой кодировке символов переменной ширины .
Является ли это возможным?Или мне нужно выделить максимально возможный размер буфера, используя CFStringGetMaximumSizeForEncoding
?
Решение
У вас есть Фонд?Если да, вы можете привести CFStringRef к NSString* и использовать lengthOfBytesUsingEncoding:.
Однако имейте в виду, что CFStringGetMaximumSizeForEncoding имеет значение O(1), тогда как lengthOfBytesUsingEncoding:равна O(n) по длине строки (по сути, вы выполняете преобразование дважды), поэтому вам все равно может быть лучше использовать CFStringGetMaximumSizeForEncoding для выделения буфера.