エンコーディング与えられたCore Foundationの文字列の計算長さを取得します。
-
22-08-2019 - |
質問
任意の文字エンコーディング与えCFString
のバイト単位の長さを取得する方法はありますか?関数CFStringGetSmallestEncoding
は、すでにいくつかの計算を行う必要がありますので、それは可能なようだが、私は最小のエンコーディングを使用したくない、私はUTF-8エンコーディングでバイトをしたい場合は、私が割り当てする必要があるかもしれませんどのように大きなバッファを知りたいですか多分別の可変幅の文字エンコーディングます。
それは可能ですか?それとも私がCFStringGetMaximumSizeForEncoding
を使用して可能な最大バッファサイズを割り当てる必要があるのですか?
解決
あなたは利用できる財団を持っていますか?もしそうなら、あなたは* NSStringのにCFStringRefをキャストしlengthOfBytesUsingEncodingを使用することができます。
あなたがまだ割り当てにCFStringGetMaximumSizeForEncodingを使用したほうが良いかもしれので、O(n)は、文字列の長さは(あなたは、本質的に二回の変換を行っている)である:それCFStringGetMaximumSizeForEncodingがlengthOfBytesUsingEncodingに対し、O(1)、ですが、を覚えておいてくださいバッファます。
所属していません StackOverflow