繁体   English   中英

如何将存储在CFArrayRef中的CFStringRef值检索到strings / char *数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM