如何将CFURLRef
转换为C++ std::string
?
我还可以通过以下方式将CFURLRef
转换为CFStringRef
:
CFStringRef CFURLGetString ( CFURLRef anURL );
但是现在我有同样的问题。如何将
CFStringRef
转换为std::string
? 最佳答案
CFStringRef is toll free bridged到NSString对象,因此,如果您以任何方式使用Cocoa或Objective C,转换都非常简单:
NSString *foo = (NSString *)yourOriginalCFStringRef;
std::string *bar = new std::string([foo UTF8String]);
更多细节can be found here。
现在,由于您没有使用Cocoa或Objective-C标记此问题,所以我猜您不想使用Objective-C解决方案。
在这种情况下,您需要从CFStringRef获取等效的C字符串:
const CFIndex kCStringSize = 128;
char temporaryCString[kCStringSize];
bzero(temporaryCString,kCStringSize);
CFStringGetCString(yourStringRef, temporaryCString, kCStringSize, kCFStringEncodingUTF8);
std::string *bar = new std::string(temporaryCString);
我没有对此代码进行任何错误检查,您可能需要使终止通过
CFStringGetCString
获取的字符串为空(我尝试通过执行bzero
来缓解这种情况)。关于c++ - 从CFURLRef或CFStringRef转换为std::string,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28860033/