我有一个 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/