缓冲指针的实际用例
解构在 Swift 库方法中使用不安全的指针;
public init?(validatingUTF8 cString: UnsafePointer<CChar>)
目的:
通过复制和验证给定指针引用的以 null 结尾的 UTF-8 数据来创建新字符串。
此初始化程序不会尝试修复格式错误的 UTF-8 代码单元序列。如果找到任何,初始化程序的结果是 nil
。下面的示例使用指向两个不同 CChar
数组的内容的指针调用此初始化程序 - 第一个具有格式良好的 UTF-8 代码单元序列,第二个在结尾处具有格式错误的序列。
Source , Apple Inc.,Swift 3 头文件 (For header access:In Playground,Cmd +单击 Swift 一词)代码行:
import Swift
let validUTF8: [CChar] = [67, 97, 102, -61, -87, 0]
validUTF8.withUnsafeBufferPointer { ptr in
let s = String(validatingUTF8: ptr.baseAddress!)
print(s as Any)
}
// Prints "Optional(Café)"
let invalidUTF8: [CChar] = [67, 97, 102, -61, 0]
invalidUTF8.withUnsafeBufferPointer { ptr in
let s = String(validatingUTF8: ptr.baseAddress!)
print(s as Any)
}
// Prints "nil"
(Source,Apple Inc.,Swift Header File Example)