CFStringRef бесплатно подключается к объекту NSString, поэтому, если вы используете Cocoa или Objective C в любом случае, преобразование очень простое:
NSString *foo = (NSString *)yourOriginalCFStringRef;
std::string *bar = new std::string([foo UTF8String]);
Подробнее можно найти здесь.
Теперь, поскольку вы не отметили этот вопрос Cocoa или Objective-C, я предполагаю, что вы не хотите использовать решение Objective-C.
В этом случае вам нужно получить эквивалент строки C из вашего CFStringRef:
const CFIndex kCStringSize = 128;
char temporaryCString[kCStringSize];
bzero(temporaryCString,kCStringSize);
CFStringGetCString(yourStringRef, temporaryCString, kCStringSize, kCFStringEncodingUTF8);
std::string *bar = new std::string(temporaryCString);
Я не проверял ошибки в этом коде, и вам может понадобиться завершать нулем строку, полученную через CFStringGetCString (я пытался смягчить это, выполнив bzero).
person
Michael Dautermann
schedule
04.03.2015