- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如何将 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/
我正在尝试播放声音,但是当我编码时: AudioServicesCreateSystemSoundID ((CFURLRef) alertSound, &soundFileObject); 它抛出以下
您好,我正在尝试显示来自服务器的 pdf,此代码从资源加载 pdf: CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle()
如何使用 ARC 编译以下代码? int main() { NSURL *url = [NSURL new]; NSURL * __strong *urlPointer = &url;
如何将 CFURLRef 转换为 C++ std::string? 我还可以通过以下方式将 CFURLRef 转换为 CFStringRef: CFStringRef CFURLGetString (
我是一名优秀的程序员,十分优秀!