将CFData转换为C-String



我想获得gpu名称,并找到使用IOKit完成此操作的代码。唯一的问题是,这段代码是在Objective-C,而我的项目是在C,我不知道如何使用C-string代替NSString。

const void *GPUModel = CFDictionaryGetValue(serviceDictionary, CFSTR("model"));
if (GPUModel != NULL) {
if (CFGetTypeID(GPUModel) == CFDataGetTypeID()) {
//(Original Comment) Create a string from the CFDataRef.
//NSString *modelName = [[NSString alloc] initWithData:
//                       (NSData *)GPUModel encoding:NSASCIIStringEncoding];
}
}

类c字符串实际上是char指针,又名char数组,用于存储每个字符。在Obj-c的情况下NSString是一个里面有一个char数组的类,那些用来修改字符串值的方法只是方法,NSString本身使用c风格的字符串,比如char数组。因此,如果你想使用c风格的字符串,你必须使用与Obj-C兼容的字符数组,因为它只是一种基本数据类型。

如果你需要进一步的帮助,请随时回复。最好问候。

解决方案感谢Cy-4AH和Rob Napier。

const char *gpu_name = (char *)CFDataGetBytePtr(GPUModel);
return gpu_name;

最新更新