如何在Swift 3中使用非安全指针
我试图用Martin R的函数来回答这个问题: 然而,非安全指针行不再适用于Swift 3,我很难理解它。我将如何使该代码适应Swift 3如何在Swift 3中使用非安全指针,swift,swift3,c-strings,unsafe-pointers,Swift,Swift3,C Strings,Unsafe Pointers,我试图用Martin R的函数来回答这个问题: 然而,非安全指针行不再适用于Swift 3,我很难理解它。我将如何使该代码适应Swift 3 if var string = String.fromCString(UnsafePointer(outdata.bytes)) { string = string.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet()) output = string.co
if var string = String.fromCString(UnsafePointer(outdata.bytes)) {
string = string.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet())
output = string.componentsSeparatedByString("\n")
}
另外,如果您想尝试使用该函数,您需要“导入Cocoa”。在Swift 3中,
readDataToEndOfFile()
返回一个数据
值,而不是NSData
。
你直接问题的答案是
let data: Data = ...
let string = data.withUnsafeBytes { String(cString: UnsafePointer<CChar>($0)) }
再次考虑引用的代码,使用
String.fromCString()
可能不是最好的解决方案。我稍后会更新。
let outdata = outpipe.fileHandleForReading.readDataToEndOfFile()
if var string = String(data: outdata, encoding: .utf8) {
string = string.trimmingCharacters(in: .newlines)
output = string.components(separatedBy: "\n")
}