我尝试过这样的方法:
String.stringWithCString(cString: UnsafePointer<CChar>, encoding: NSStringEncoding)
但不幸的是,它只适用于UnsafePointer<CChar>
。我不知道如何将UnsafePointer<CUnsignedChar>
转换为UnsafePointer<CChar>
。
发布于 2014-09-15 06:43:06
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))
发布于 2021-06-23 00:18:46
自Swift 3.0以来
let str = String(cString: UnsafePointer<CChar>(ptr))
https://stackoverflow.com/questions/25850477
复制