c++ - 将 std::u16string 转换为 NSString

标签 c++ ios objective-c

在我的 native 库中,我曾经使用此函数返回 NSStringstd::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/

相关文章:

objective-c - 为什么使用 CoreText 绘图看起来与使用 UILabel 不同?

c++ - 静态变量应该在哪里声明

c++ - 在 C++ 中绑定(bind)多个引用的临时对象的生命周期

ios - 使用两个 "modes"(UIViewController 和 UINavigationController)创建 iOS 应用程序

objective-c - 如何检查传入的 JSON feed 是否包含单个或多个记录?

iphone - 在启用分页和多个图像的情况下缩放 UIScrollView

c++ - 如何在预定义的字符串中添加一个字符?

c++ - Arduino 1.6.9 及更高版本的 c++ 支持

android - 在 Xamarin.Forms 中复制下拉 ToolbarItem "More"

ios - 使用 Objective-C 将 XMP 数据嵌入到 PNG