【发布时间】:2011-07-27 05:36:33
【问题描述】:
从具有 UTF16 编码的 C++ basic_string<wchar_t> 对象转换为 Objective-C NSString 对象的最佳方法是什么?
我可以像这样从 wchar_t* 转换为 char* 并且仍然让 stringWithCString 正确使用字符串吗?
[NSString stringWithCString:(char*)wideCharBasicString.c_str() encoding:NSUTF16StringEncoding];
谢谢你, 谢恩
【问题讨论】:
-
iOS 上的
wchar_t是 32 位宽的 IIRC。 -
我刚刚验证它确实是 32 位的。我将如何使用 UTF32 编码使用相同的方法?
-
所以 NSString *myNSString = [NSString stringWithFormat:@"%S",wideCharBasicString.c_str()];似乎可以解决问题。 stringWIthCString 只给了我一个空的 NSString。此外,如果有人需要像我一样使用它,标志 -fshort-wchar 在 iOS 上将 wchar_t 转换为 16 位。
-
一般来说,如果你保证你的原始字符串是UTF-16(不仅仅是UCS-2),你可以把它复制到
uint16_t[],然后使用iconv创建所需的编码(如果它不同于 UTF-16),然后从那里构造您的 NSString。
标签: iphone objective-c encoding nsstring wchar-t