将std::u16string转换为NSString



在我的原生库中,我曾经使用此函数从std::string:中返回NSString

- (NSString*)return_my_cpp_string {
NSString* result = [NSString stringWithCString:my_cpp_string.c_str() encoding:[NSString defaultCStringEncoding]];
return result;
}

我现在需要更新这个函数,使其返回std::u16string中的NSString,但我找不到任何明显的方法

使用stringWithCharacters:length而不是stringWithCString:encoding

CCD_ 7将指向UTF-16代码单元的C样式数组的指针作为输入。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;
}

最新更新