我是跨平台编程的新手。
我在这里遇到了一个问题,但由于在线帮助非常有限(或者我不知道在哪里搜索),我找不到解决方案。

问题是:
我想在 C++/C 中将 CFArrayRef 转换为可用格式
我有一个 CFArrayRef,它以 CFStringRef 格式保存语言代码。
我想在一些 std::vector 或 C++ 字符数组中检索它*

最佳答案

假设你有一些 CFStringRef 的 CFArrayRef,
那么你所要做的就是计算vector的元素数量,
迭代 CFArrayRef,从中取出字符串,然后做任何你想做的事情,
在一个实例的示例代码中,我正在提取 CFArrayRef 的元素并将它们存储在 std::strings 的 std::vector 中。

在这里说“名称”是一个包含一些名称的 CFArrayRef:

// Count of available names in ArrayRef
CFIndex nameCount = CFArrayGetCount( names );

std::vector<std::string> vecNames;

//Iterate through the CFArrayRef and fill the vector
for( int i = 0; i < nameCount ; ++i  )
{
    CFStringRef sName = (CFStringRef)CFArrayGetValueAtIndex( names, i );
    strName = CFStringGetCStringPtr( sName , kCFStringEncodingMacRoman );
    vecNames.push_back( strName );
}

关于c++ - 如何将存储在 CFArrayRef 中的 CFStringRef 值检索到字符串/字符数组 *,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26030084/

10-11 19:05