将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;
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...