文書   >  Swift   >  String   >   decodeCString(_:as:repairingInvalidCodeUnits:)


汎用型メソッド


decodeCString(_:as:repairingInvalidCodeUnits:)


指定されたエンコーディングを使用して、与えられたポインタによって参照された、null で終了するデータをコピーすることによって新しい文字列を作成します。





宣言


static func decodeCString<Encoding>(_ cString: UnsafePointer<Encoding.CodeUnit>?, as encoding: Encoding.Type, repairingInvalidCodeUnits isRepairing: Bool = true) -> (result: String, repairsMade: Bool)? where Encoding : _UnicodeEncoding


パラメータ


cStringencoding でエンコードされた、null で終了するコードシーケンスへのポインタ。
encodingcString によって参照されるデータの Unicode エンコーディング。
isRepairingcString によって参照されるデータに誤った形式のシーケンスが含まれている場合であっても、true を渡して新しい文字列を作成します。誤った形式のシーケンスは、Unicode の置換文字 ("\u{FFFD}") に置き換えられます。誤った形式のシーケンスが検出された場合は、false を渡して新しい文字列の作成を中断します。


戻り値


新しい文字列と、修復が行われたかどうかを示すブール値とのタプル。isRepairingfalse で誤った形式のシーケンスが検出された場合、このメソッドは nil を返します。


議論


isRepairing として true を渡すと、このメソッドは誤った形式のシーケンスを Unicode の置換文字 ("\u{FFFD}") で置き換えます。そうでなければ、誤った形式のシーケンスにより、このメソッドはデコードを中止し、nil を返します。


以下の例では、2 つの異なる CChar 配列の内容へのポインタを使用してこのメソッドを呼び出します。1 つ目は正しい形式の UTF-8 コード単位シーケンスを使用し、2 つ目は誤った形式のシーケンスを最後に使用します。


let validUTF8: [UInt8] = [67, 97, 102, 195, 169, 0]
validUTF8.withUnsafeBufferPointer { ptr in
    let s = String.decodeCString(ptr.baseAddress,
                                 as: UTF8.self,
                                 repairingInvalidCodeUnits: true)
    print(s)
}
// Prints "Optional((Café, false))"

let invalidUTF8: [UInt8] = [67, 97, 102, 195, 0]
invalidUTF8.withUnsafeBufferPointer { ptr in
    let s = String.decodeCString(ptr.baseAddress,
                                 as: UTF8.self,
                                 repairingInvalidCodeUnits: true)
    print(s)
}
// Prints "Optional((Caf�, true))"


以下も見よ




C 文字列の変換




目次
Xcode の新機能

  • 言語:Swift
  • SDK
  • Xcode 8.0+

  • Framework
  • Swift 標準ライブラリ
  • 宣言
  • パラメータ
  • 戻り値
  • 関連
  • 以下も見よ












  • トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)












    トップへ(Swift 標準ライブラリ演算子)