gpt4 book ai didi

c++ - 从 CFURLRef 或 CFStringRef 转换为 std::string

转载 作者:可可西里 更新时间:2023-11-01 18:15:52 26 4
gpt4 key购买 nike

如何将 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);

我没有对这段代码做任何错误检查,你可能需要 null 终止通过 CFStringGetCString 获取的字符串(我试图通过执行 bzero 来减轻这种情况) .

关于c++ - 从 CFURLRef 或 CFStringRef 转换为 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28860033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com