2012-02-02 62 views
4

我有一个wchar_t *,我需要在一个需要CFStringref转换为wchar_t到CFStringref

我使用CFStringCreateWithCharacters尝试了功能使用,但我不会用它在任何地方获得。

所以,如果我有:

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

如何转换和复制widecharvarstringref?此值将SecRequirementCreateWithString()

感谢

+0

http://stackoverflow.com/questions/7753262/how-to-convert-wchar-t-to-nsstring – 2012-02-02 21:32:51

+0

谢谢,但我不能在C中使用。 – 2012-02-02 21:37:37

回答

4

我这样做了我的头和内存的顶部使用;如果有问题,评论,我会实际测试它。

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

+0

这样做,谢谢! – 2012-02-03 15:46:46