緩衝指標的實際用例

解構在 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)