Получите вычисленную длину базовой базовой строки с учетом кодировки - PullRequest
1 голос
/ 30 марта 2009

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

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

1 Ответ

2 голосов
/ 29 апреля 2009

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

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

...