将wchar_t转换为CFStringref

时间:2012-02-02 21:16:03

标签: c macos

我需要在需要wchar_t *

的函数上使用CFStringref

我尝试使用CFStringCreateWithCharacters,但我没有随处可见。

所以,如果我有:

wchar_t * widecharvar = L"some value";
CFStringRef stringref;

如何将widecharvar转换并复制到stringref?该值将用于SecRequirementCreateWithString()

由于

1 个答案:

答案 0 :(得分:5)

我正在做我的头脑和记忆;如果它有问题,请评论,我会实际测试它。

// Check our byte order. Assuming we made the string as in your example
CFStringEncoding encoding = (CFByteOrderLittleEndian == CFByteOrderGetCurrent()) ? 
                              kCFStringEncodingUTF32LE : kCFStringEncodingUTF32BE;

int widecharvarLen = wcslen(widecharvar); 

CFStringRef string = CFStringCreateWithBytes(NULL, 
                                             widecharvar, 
                                             (widecharvarLen * sizeof(wchar_t)),  
                                             encoding,
                                             false);

最后false表示该字符串不包含BOM(字节顺序标记),这是我假设您正在处理的字符串。