basic_string; UTF16 编码为 NSString
从 UTF16 编码的 C++ basic_string
对象转换为 Objective-C NSString 对象的最佳方法是什么?
我可以像这样从 wchar_t* 转换为 char* 并且仍然让 stringWithCString 正确使用字符串吗?
[NSString stringWithCString:(char*)wideCharBasicString.c_str() encoding:NSUTF16StringEncoding];
谢谢你, 谢恩
What is the best method to convert from a C++ basic_string<wchar_t>
object with UTF16 encoding to an Objective-C NSString object?
Can I cast from wchar_t* to char* like so and still have stringWithCString use the string correctly?
[NSString stringWithCString:(char*)wideCharBasicString.c_str() encoding:NSUTF16StringEncoding];
Thank you,
Shane
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果缓冲区是 UTF-16 编码的,您可以这样做:
stringWithCString
看起来像是在多字节字符缓冲区上阻塞,在它找到的第一个 NULL 字节处停止。[更新]
我向苹果提交了一个错误,这显然是预期的行为。。 stringWithCString 仅支持 8 位编码,并将在第一个零字节处停止。
If the buffer is UTF-16 encoded, you could do this:
stringWithCString
looks like it barfs on multi-byte character buffers, stopping at the first NULL byte it finds.[UPDATE]
I filed a bug with apple, and this is the expected behaviour, apparently. stringWithCString only supports 8-bit encodings and will stop at the first zero byte.
我使用以下内容进行转换:
此外,如果有人需要像我一样使用它,标志 -fshort-wchar 在 iOS 上将 wchar_t 转换为 16 位。
I used the following to do the converison:
Also if anyone needs to use this like I did, the flag -fshort-wchar turns wchar_t to 16-bit on iOS.
这是最不丑陋的方法(utf16):
This is the least ugly way to do it (utf16):