A CFStringRef is toll free bridged zu einem NSString Objekt, also, wenn Sie mit Kakao oder Objective C in irgendeiner Weise, die Umwandlung ist super einfach:
NSString *foo = (NSString *)yourOriginalCFStringRef;
std::string *bar = new std::string([foo UTF8String]);
Weitere Einzelheiten can be found here.
Jetzt, da Sie diese Frage nicht mit Cocoa oder Objective-C markiert haben, vermute ich, dass Sie die Objective-C-Lösung nicht verwenden möchten.
In diesem Fall müssen Sie den C-String Äquivalent von Ihrem CFStringRef erhalten:
const CFIndex kCStringSize = 128;
char temporaryCString[kCStringSize];
bzero(temporaryCString,kCStringSize);
CFStringGetCString(yourStringRef, temporaryCString, kCStringSize, kCFStringEncodingUTF8);
std::string *bar = new std::string(temporaryCString);
ich einen Fehler auf dieser Code Überprüfung tun nicht und Sie können die Zeichenfolge abgerufen über CFStringGetCString
auf null müssen beenden (Ich versuchte das zu mildern, indem ich tat).
Während diese Antwort ist einfach, es hat mich gebissen vor kurzem. Ich habe gerade festgestellt, dass in den Dokumenten der Kommentar neben 'CFStringGetCStringPtr' lautet:'/* Kann jederzeit NULL zurückgeben; sei auf NULL */'vorbereitet. Sei also vorsichtig, wenn du das verwendest. – dgross