Используйте initWithBytes:length:encoding
. Вам нужно знать кодировку, используемую wchar_t
, я думаю, что это UTF-32 на платформах Apple.
#if defined(__BIG_ENDIAN__)
# define WCHAR_ENCODING NSUTF32BigEndianStringEncoding
#elif defined(__LITTLE_ENDIAN__)
# define WCHAR_ENCODING NSUTF32LittleEndianStringEncoding
#endif
[[NSString alloc] initWithBytes:mystring
length:(mylength * 4) encoding:WCHAR_ENCODING]
В общем, я рекомендую избегать использования wchar_t
, если это вообще возможно, потому что он не очень переносим. В частности, как вы должны выяснить, какую кодировку он использует? (В Windows это UTF-16LE или UTF-16BE, в OS X, Linux и iOS это UTF-32LE или UTF-32BE).