string - 如何将 UnsafePointer<CUnsignedChar> 转换为字符串?

标签 string swift

我试过这个方法:

String.stringWithCString(cString: UnsafePointer<CChar>, encoding: NSStringEncoding)

但不幸的是,它只适用于 UnsafePointer<CChar> .我不知道如何转换 UnsafePointer<CUnsignedChar>UnsafePointer<CChar> .

最佳答案

struct UnsafePointer<T>有一个构造函数,它接受一个不同的不安全指针 输入参数:

/// Convert from a UnsafePointer of a different type.
///
/// This is a fundamentally unsafe conversion.
init<U>(_ from: UnsafePointer<U>)

因此您可以从 ptr : UnsafePointer<CUnsignedChar> 创建一个字符串 与

let str = String.stringWithCString(UnsafePointer(ptr), encoding: someEncoding)

或者,在 UTF-8 编码的情况下,更简单地使用

let str = String.fromCString(UnsafePointer(ptr))

注意泛型类型 <CChar>是从这里的上下文自动推断出来的, 即最后一行相当于

let str = String.fromCString(UnsafePointer<CChar>(ptr))

关于string - 如何将 UnsafePointer<CUnsignedChar> 转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25850477/

相关文章:

C strcat/strcpy 到字符指针无法正确打印

python - 在空格处拆分字符串,但不要删除它们

swift - 找不到 NSNotification.Name.didBecomeActiveNotification

C++文件输出只接受第一个字

c - 值没有保留在函数之外

ios - 通过重写 TabbarViewController 中的 shouldSelect 方法来推送 View Controller

ios - 在帖子下显示评论

ios - 推送通知内的文本倒计时器

c - 在c中使用字符串-扩展,替换,存储和打印字符串

ios - 擦洗时跳动的 UISlider - 将 UISlider 与 AVPlayer 一起使用