2009-03-29 7 views
1

Existe-t-il un moyen d'obtenir la longueur en octets d'un CFString avec un codage de caractère arbitraire? Cela semble possible parce que la fonction CFStringGetSmallestEncoding doit déjà faire des calculs, mais je ne veux pas utiliser le plus petit encodage, je veux savoir quelle taille de buffer je devrais allouer si je veux que les octets soient encodés en UTF-8 ou peut-être un autre encodage de caractères de largeur variable.Obtention d'une longueur calculée d'une chaîne de base de Core avec un codage

Est-ce possible? Ou ai-je besoin d'allouer la taille de mémoire tampon maximale possible en utilisant CFStringGetMaximumSizeForEncoding?

Répondre

2

Avez-vous une Fondation disponible? Si tel est le cas, vous pouvez convertir CFStringRef en NSString * et utiliser lengthOfBytesUsingEncoding :.

Gardez à l'esprit que CFStringGetMaximumSizeForEncoding est O (1), alors que lengthOfBytesUsingEncoding: est O (n) de la longueur de la chaîne (que vous faites essentiellement la conversion deux fois), de sorte que vous pouvez toujours préférable d'utiliser CFStringGetMaximumSizeForEncoding à allouer un tampon.

Questions connexes