在我的 native 库中,我曾经使用此函数返回 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
将指向 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;
}
关于c++ - 将 std::u16string 转换为 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63361240/