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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top