2009-03-29 5 views
1

임의의 문자 인코딩이 주어진 경우 길이가 바이트 인 CFString을 가져 오는 방법이 있습니까? 함수 CFStringGetSmallestEncoding이 이미 약간의 계산을해야하기 때문에 가능하지만 가장 작은 인코딩을 사용하고 싶지 않습니다. UTF-8 인코딩으로 바이트를 원한다면 할당해야 할 버퍼가 얼마나 큰지 알아야합니다. 다른 가변 폭 문자 인코딩 일 수도 있습니다.인코딩을 기반으로 계산 된 Core Foundation 문자열의 길이를 구하십시오.

가능합니까? 또는 CFStringGetMaximumSizeForEncoding을 사용하여 가능한 최대 버퍼 크기를 할당해야합니까?

답변

2

파운데이션을 사용할 수 있습니까? 그렇다면 CFStringRef를 NSString *으로 캐스팅하고 lengthOfBytesUsingEncoding :을 사용할 수 있습니다. 당신은 여전히에 CFStringGetMaximumSizeForEncoding를 사용하여 더 잘 할 수 있도록, 문자열의 길이 (당신은 기본적으로 두 번 변환을하고있다)에서 O (N)이다 : 그 CFStringGetMaximumSizeForEncoding는 O 비록

(1), lengthOfBytesUsingEncoding 반면 명심하십시오 버퍼를 할당한다.

관련 문제