Obter um comprimento calculado de uma corda Núcleo Fundação dada uma codificação
-
22-08-2019 - |
Pergunta
Existe uma maneira de obter o tamanho em bytes de um CFString
dada uma codificação de caracteres arbitrária? Parece possível porque a função CFStringGetSmallestEncoding
deve fazer alguns cálculos já, mas eu não quero usar o menor codificação, eu quero descobrir como grande um buffer eu poderia precisar alocar se eu quiser os bytes na codificação UTF-8 ou talvez uma outra codificação de caracteres de largura variável.
É possível? Ou eu preciso para alocar o máximo possível tamanho do buffer usando CFStringGetMaximumSizeForEncoding
?
Solução
Você tem Foundation disponível? Se assim for, você poderia lançar o CFStringRef a um NSString * e uso lengthOfBytesUsingEncoding:.
Tenha em mente que CFStringGetMaximumSizeForEncoding é O (1), ao passo que lengthOfBytesUsingEncoding: é O (n) no comprimento da corda (que são essencialmente fazer a conversão duas vezes), assim você ainda pode ser melhor fora de usar CFStringGetMaximumSizeForEncoding para alocar um tampão.