【发布时间】:2018-12-20 12:56:01
【问题描述】:
要将String 转换为 UnsafePointer,我使用这个:
var tail = ("" as NSString).utf8String
但是没有NSString 转换有什么方法可以转换吗?
我在C-library 方法中使用UnsafePointer。
【问题讨论】:
标签: swift foundation
要将String 转换为 UnsafePointer,我使用这个:
var tail = ("" as NSString).utf8String
但是没有NSString 转换有什么方法可以转换吗?
我在C-library 方法中使用UnsafePointer。
【问题讨论】:
标签: swift foundation
对此有专门的方法:.withCString(_:):
yourString.withCString { pointer in
// work with the pointer
return result
}
或者如果你想要它作为财产,有.utf8CString:
var tail = "".utf8CString // ContiguousArray<CChar> (aka ContiguousArray<Int8>)
// and then
tail.withUnsafeBufferPointer { pointer in
// work with the pointer
return result
}
【讨论】:
init 将UnsafePointer 转换为UnsafeMutablePointer。但是您将无法更改原始 String 的内容,我想当您要求 C string 时,新的连续内存区域会被保留并填充原始字符串中的数据,并且可能只会更改该新区域中的内容.