缓冲指针的实际用例

解构在 Swift 库方法中使用不安全的指针;

public init?(validatingUTF8 cString: UnsafePointer<CChar>)

目的:

通过复制和验证给定指针引用的以 null 结尾的 UTF-8 数据来创建新字符串。

此初始化程序不会尝试修复格式错误的 UTF-8 代码单元序列。如果找到任何,初始化程序的结果是 nil。下面的示例使用指向两个不同 CChar 数组的内容的指针调用此初始化程序 - 第一个具有格式良好的 UTF-8 代码单元序列,第二个在结尾处具有格式错误的序列。

SourceApple 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)