c++ - 将 std::u16string 转换为 NSString
问题描述
在我的本机库中,我曾经使用此函数从 a 中返回NSString
a std::string
:
- (NSString*)return_my_cpp_string {
NSString* result = [NSString stringWithCString:my_cpp_string.c_str() encoding:[NSString defaultCStringEncoding]];
return result;
}
我现在需要更新这个函数,以便它返回 a NSString
out of anstd::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;
}
推荐阅读
- kubernetes - Prometheus 监控差异 Podmonitor 与 AdditionalScrapeConfigs
- c# - 如何在查询中引用表单元素的值?C# MSSQL
- python - Python + 谷歌表 | 如何更新特定单元格
- python - 该库未安装
- javascript - 如何使用 JavaScript 检查是否为共享点在线列表启用了评级?
- c# - 如何使用 AvaloniaUI 在 ComboBox 中动态加载项目
- css - 在选定日期为反应日期添加半径(airBnB)
- apache-spark - 通过 Spark.submit 但不是 Jupyter-notebook 运行 pyspark 代码的问题
- angular - Jhipster实体如何在页面上使用
- r - R Studio 获取前 5 个值、后 5 个值等向量的平均值