将wchar_t转换为CFStringref

Mr *_*eph 4 c macos

wchar_t *需要在需要的函数上使用CFStringref

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

所以,如果我有:

wchar_t * widecharvar = L"some value";
CFStringRef stringref;
Run Code Online (Sandbox Code Playgroud)

如何转换和复制widecharvarstringref?该值将用于SecRequirementCreateWithString()

谢谢

Rob*_*ier 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);
Run Code Online (Sandbox Code Playgroud)

最后一个false意味着字符串不包含BOM(字节顺序标记),这是我假设您正在处理的字符串.