したがって、それは両方の符号付きおよび符号なしの文字の配列(NULLで終了する)から作成することができる2つの初期化子
public init(cString: UnsafePointer<CChar>)
public init(cString: UnsafePointer<UInt8>)
を有しています。したがって
let s = String(cString: yourCharPointer)
はちょうどうまくいきます。
String
はが置換文字によってそれら を置き換えるのではなく、病気に形成されたUTF-8シーケンスにを失敗し、別の初期化子
public init?(validatingUTF8 cString: UnsafePointer<CChar>)
を持っています。このinitメソッドには、符号なし文字をとる相手の はありません。
例としてCString.swiftで既存の実装を考えると、拡張としてこれを追加するには余りにも困難ではない。
extension String {
public init?(validatingUTF8 cString: UnsafePointer<UInt8>) {
guard let (s, _) = String.decodeCString(cString, as: UTF8.self,
repairingInvalidCodeUnits: false) else {
return nil
}
self = s
}
}
、次いで
if let s = String(validatingUTF8: yourCharPointer) {
print(s)
} else {
print("invalid UTF-8")
}
も(NULLで終了する)配列と連動符号付き文字と符号なし文字の両方。
ありがとうございます。私の自動完成品には表示されませんでした。 – AthanasiusOfAlex