以下示例适用于Unicode字符串,但不适用。
CFStringRef aString = CFSTR("one"); // in real life this is an Unicode string
CFStringRef formatString = CFSTR("This is %s example"); // also tried %S but without success
CFStringRef resultString = CFStringCreateWithFormat(NULL, NULL, formatString, aString);
// Here I should have a valid sentence in resultString but the current result is like aString would contain garbage.
最佳答案
如果要通过%@
包含CFStringRef
,请使用CFStringCreateWithFormat
。
请参见the Format Specifiers section of Strings Programming Guide for Core Foundation。%@
适用于Objective C对象,或CFTypeRef
对象(CFStringRef
与CFTypeRef
兼容)%s
用于以8位无符号字符(即普通C字符串)为空终止的数组。%S
用于以16位Unicode字符为空终止的数组。
CFStringRef对象与“以16位Unicode字符为null终止的数组”不同。