我有一个 wchar_t * 需要在需要 CFStringref 的函数上使用

我尝试使用 CFStringCreateWithCharacters 但我没有得到任何结果。

所以,如果我有:

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

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

最佳答案

我在头脑和内存中做这件事;如果有问题,评论,我会实际测试。

// 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(字节顺序标记),我假设您正在处理这种字符串。

关于将 wchar_t 转换为 CFStringref,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9120106/

10-11 10:50