文書   >  Swift   >  String   >   init(cString:)
イニシャライザ
init(cString:)
与えられたポインタによって参照される null で終了する UTF-8 データをコピーすることによって新しい文字列を作成します。
宣言
パラメータ
cString | null で終わる UTF-8 コードシーケンスへのポインタ。 |
議論
cString が不正な形式の UTF-8 コード単位シーケンスを含む場合、このイニシャライザはそれらを Unicode 置換文字 ("\u{FFFD}") に置き換えます。
以下の例では、このイニシャライザを 2 つの異なる CChar 配列の内容へのポインタを使用して呼び出します。1 つ目は正しい形式の UTF-8 コード単位シーケンスを使用し、2 つ目は良くない形式のシーケンスを最後に使用します。
let validUTF8: [CChar] = [67, 97, 102, -61, -87, 0] validUTF8.withUnsafeBufferPointer { ptr in let s = String(cString: ptr.baseAddress!) print(s) } // Prints "Café" let invalidUTF8: [CChar] = [67, 97, 102, -61, 0] invalidUTF8.withUnsafeBufferPointer { ptr in let s = String(cString: ptr.baseAddress!) print(s) } // Prints "Caf�"
関連
プロトコルから
以下も見よ
C 文字列の変換
init?<S>(bytes: S, encoding: String.Encoding)
与えられたエンコーディングで解釈された、与えられたバイトのバッファから、与えられたバイト数を含む初期化された String オブジェクトを作成し、必要に応じてバッファを解放します。警告:このイニシャライザはメモリセーフではありません。
init(cString: UnsafePointer<UInt8>)
与えられたポインタによって参照される null で終了する UTF-8 データをコピーすることによって新しい文字列を作成します。
init?(cString: UnsafePointer<CChar>, encoding: String.Encoding)
与えられた C 配列内のバイトを含む文字列を生成し、与えられたエンコーディングに従って解釈します。
init<Encoding>(decodingCString: UnsafePointer<Encoding.CodeUnit>, as: Encoding.Type)
与えられたポインタの位置にある null で終了するバイトのシーケンスから文字列を作成します。
指定されたエンコーディングを使用して、与えられたポインタによって参照された、null で終了するデータをコピーすることによって新しい文字列を作成します。