我试图在运行时CFStringRef
从 a创建一个新的const char*
,但CFStringCreateWithCString
返回null
所有短于 10 个字符的字符串:
// Test w/ 9-character string
CFStringRef str1 = CFStringCreateWithCString(NULL, "123456789", kCFStringEncodingUTF8);
printf("str1: %p - %s\n", str1, CFStringGetCStringPtr(str1, kCFStringEncodingUTF8));
// Test w/ 10-character string
CFStringRef str2 = CFStringCreateWithCString(NULL, "0123456789", kCFStringEncodingUTF8);
printf("str2: %p - %s\n", str2, CFStringGetCStringPtr(str2, kCFStringEncodingUTF8));
上述示例的输出:
str1: 0x1ea1f72bb30ab195 - (null)
str2: 0x1005073e0 - 0123456789
如您所见,第一个字符串(由 9 个字符组成)返回null
,而第二个字符串(10 个字符)工作正常。
我做了一些测试,它似乎CFStringCreateWithCString
适用于所有超过 10 个字符null
的字符串,但总是返回 9 或更少的字符串。
什么可能导致这种行为,我该如何解决?