我是跨平台编程的新手。 我在这里面临一个问题,但由于在线帮助非常有限(或者我可能不知道在哪里搜索),我找不到解决方案。
问题是: 我想将CFArrayRef转换为C ++ / C中的可用格式 我有一个CFArrayRef,它以CFStringRef格式保存语言代码。 我想在一些char *
的std :: vector或C ++数组中检索它答案 0 :(得分:8)
假设你有一些CFStringRef的CFArrayRef, 那么你所要做的就是计算向量的元素数量, 迭代CFArrayRef,从中获取字符串并做任何你想做的事情, 在一个实例的示例代码中,我提取CFArrayRef的元素并将它们存储在std :: strings的std :: strings中。
在这里说"姓名"是一个包含一些名称的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 );
}
答案 1 :(得分:2)
CFString有这个:
CFStringGetCString
将字符转换为给定编码后,将字符串的字符内容复制到本地C字符串缓冲区。
Boolean CFStringGetCString (
CFStringRef theString,
char *buffer,
CFIndex bufferSize,
CFStringEncoding encoding
);
参数:
theString
您要访问其内容的字符串。