在给定编码的情况下获取Core Foundation字符串的计算长度

时间:2009-03-29 21:37:11

标签: character-encoding core-foundation cfstring

有没有办法在给定任意字符编码的情况下获得CFString的字节长度?这似乎是可能的,因为函数CFStringGetSmallestEncoding必须已经进行了一些计算,但是我不想使用最小的编码,我想知道如果我想要UTF中的字节,我可能需要分配多大的缓冲区-8编码或可能是另一种可变宽度的字符编码。

有可能吗?或者我是否需要使用CFStringGetMaximumSizeForEncoding分配最大可能的缓冲区大小?

1 个答案:

答案 0 :(得分:2)

你有基金会吗?如果是这样,您可以将CFStringRef强制转换为NSString *并使用lengthOfBytesUsingEncoding:。

请记住,虽然CFStringGetMaximumSizeForEncoding是O(1),而lengthOfBytesUsingEncoding:是字符串长度的O(n)(你实际上是进行了两次转换),所以你仍然可以更好地使用CFStringGetMaximumSizeForEncoding来分配一个缓冲区。