[英]How to retrieve CFStringRef values stored in CFArrayRef to an array of strings / char *
我是跨平台编程的新手。 我在这里面临一个问题,但由于在线帮助非常有限(或者我可能不知道在哪里搜索),我无法找到解决方案。
问题是:我想将CFArrayRef转换为C ++ / CI中的可用格式,其CFArrayRef保存CFStringRef格式的语言代码。 我想在一些std :: vector或C ++的char *数组中检索它
假设您有一些CFStringRef的CFArrayRef,那么您所要做的就是计算向量的元素数量,迭代CFArrayRef,从中获取字符串并做任何您想要做的事情,在示例代码中对于一个实例,我正在提取CFArrayRef的元素并将它们存储在std :: vector的std :: strings中。
在这里说“names”是一个包含一些名字的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 );
}
CFString有这个: CFStringGetCString
将字符转换为给定编码后,将字符串的字符内容复制到本地C字符串缓冲区。
Boolean CFStringGetCString (
CFStringRef theString,
char *buffer,
CFIndex bufferSize,
CFStringEncoding encoding
);
参数: theString
您要访问其内容的字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.