如何解决将std :: u16string转换为NSString
在我的本机库中,我曾经使用此函数从NSString
中返回std::string
:
- (NSString*)return_my_cpp_string {
NSString* result = [NSString stringWithCString:my_cpp_string.c_str() encoding:[NSString defaultCStringEncoding]];
return result;
}
我现在需要更新此函数,以便它从NSString
中返回std::u16string
,但是我找不到任何明显的方法。
解决方法
使用stringWithCharacters:length
代替stringWithCString:encoding
。
stringWithCharacters
将一个指向C样式的UTF-16代码单元的数组的指针作为输入。 std::u16string
是UTF-16编码的字符串,因此您可以按原样使用其数据,例如:
- (NSString*)return_my_cpp_string {
const unichar *pchars = (const unichar *) my_cpp_string.c_str();
NSString* result = [NSString stringWithCharacters:pchars length:my_cpp_string.size()];
return result;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。