如何将wchar_t复制到NSString中?

glu*_*z78 1 iphone wchar-t nsstring

我正在使用stringWithFormat @"%ls"来做它,我只看到第一个字符被复制,这让我觉得它仍然假设它是一个单字节字符.

有任何想法吗?

Die*_*Epp 5

使用initWithBytes:length:encoding.你必须知道使用的编码wchar_t,我相信它是Apple平台上的UTF-32.

#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]
Run Code Online (Sandbox Code Playgroud)

一般来说,我建议尽量避免使用wchar_t,因为它不是很便携.特别是,你应该如何找出它使用的编码?(在Windows上,它是UTF-16LE或UTF-16BE,在OS X,Linux和iOS上,它是UTF-32LE或UTF-32BE).