【问题标题】:What is the best conversion from String into UnsafePointer<Int8>?从 String 到 UnsafePointer<Int8> 的最佳转换是什么?
【发布时间】:2018-12-20 12:56:01
【问题描述】:

要将String 转换为 UnsafePointer,我使用这个:

var tail = ("" as NSString).utf8String

但是没有NSString 转换有什么方法可以转换吗?

我在C-library 方法中使用UnsafePointer

【问题讨论】:

    标签: swift foundation


    【解决方案1】:

    对此有专门的方法:.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
    }
    

    【讨论】:

    • 顺便说一下,这是不可变的解决方案
    • @Vyacheslav,问题中没有可变性要求。但是您可以使用此initUnsafePointer 转换为UnsafeMutablePointer。但是您将无法更改原始 String 的内容,我想当您要求 C string 时,新的连续内存区域会被保留并填充原始字符串中的数据,并且可能只会更改该新区域中的内容.
    猜你喜欢
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 2013-12-22
    • 2010-09-08
    • 2022-01-24
    相关资源
    最近更新 更多