以下示例适用于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对象(CFStringRefCFTypeRef兼容)
%s用于以8位无符号字符(即普通C字符串)为空终止的数组。
%S用于以16位Unicode字符为空终止的数组。


CFStringRef对象与“以16位Unicode字符为null终止的数组”不同。

08-27 03:20