Pregunta

¿Hay una manera de conseguir la longitud en bytes de un CFString dado una codificación de caracteres arbitraria? Parece posible porque el CFStringGetSmallestEncoding función debe hacer algunos cálculos ya, pero no quiero utilizar la codificación más pequeña, quiero saber lo grande que una memoria intermedia que podría necesitar asignar si quiero los bytes de codificación UTF-8 o tal vez otro carácter de anchura variable de codificación.

¿Es posible? ¿O tengo que asignar el máximo posible de tamaño de búfer utilizando CFStringGetMaximumSizeForEncoding?

¿Fue útil?

Solución

¿Tiene Fundación disponibles? Si es así, usted podría emitir el CFStringRef a un NSString * y utilizar lengthOfBytesUsingEncoding:.

Tenga en cuenta sin embargo que CFStringGetMaximumSizeForEncoding es O (1), mientras que lengthOfBytesUsingEncoding: es O (n) de la longitud de la cadena (que está haciendo esencialmente la conversión de dos veces), por lo que aún puede ser mejor usar CFStringGetMaximumSizeForEncoding asignar un tampón.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top