有没有办法在给定任意字符编码的情况下获得CFString
的字节长度?这似乎是可能的,因为函数CFStringGetSmallestEncoding
必须已经进行了一些计算,但是我不想使用最小的编码,我想知道如果我想要UTF中的字节,我可能需要分配多大的缓冲区-8编码或可能是另一种可变宽度的字符编码。
有可能吗?或者我是否需要使用CFStringGetMaximumSizeForEncoding
分配最大可能的缓冲区大小?
答案 0 :(得分:2)
你有基金会吗?如果是这样,您可以将CFStringRef强制转换为NSString *并使用lengthOfBytesUsingEncoding:。
请记住,虽然CFStringGetMaximumSizeForEncoding是O(1),而lengthOfBytesUsingEncoding:是字符串长度的O(n)(你实际上是进行了两次转换),所以你仍然可以更好地使用CFStringGetMaximumSizeForEncoding来分配一个缓冲区。