2012-02-02 100 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