问题描述
在我的本机库中,我曾经使用此函数从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;
}