swift - 如何在 swift 中声明 char *const argv[]

标签 swift

<分区>

我正在尝试制作一个 C 风格的字符指针数组,如下所示:

*const argv[] 

我发现我必须使用 UnsafePointer<UnsafeMutablePointer<Int8>>

但我不知道如何初始化它。

如何将这个普通数组映射到 UnsafePointer<UnsafeMutablePointer<Int8>> :

let argv = ["/usr/bin/printf", "BBB"]

谢谢

最佳答案

最简单的方法是让 Cocoa 为您形成 C 字符串:

let args = ["/usr/bin/printf","BBB"]
var cs = UnsafeMutablePointer<UnsafeMutablePointer<Int8>>.alloc(2)
for (ix,s) in args.enumerate() {
    cs[ix] = UnsafeMutablePointer<Int8>((s as NSString).UTF8String)
}
var cs2 : UnsafePointer<UnsafeMutablePointer<Int8>> = UnsafePointer(cs)

当心; cs 不包含副本。它的指针直接指向 args 中的字符串。

关于swift - 如何在 swift 中声明 char *const argv[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33404598/

相关文章:

ios - 通过 segue 传递子类的最佳方法是什么?

ios - 检查 AnyObject 是否为空或没有键或该键的值是否为空

ios - 当显示 UIAlertViewController 时,Viewcontroller 将另一个 View Controller 显示为背景层?

ios - 如何在 UITableView 中将文件夹的文件夹显示为列表 - Swift

ios - 检测到信标时打开新 View

swift - 通过属性崩溃引用另一个协议(protocol)的协议(protocol) SourceKitService 和 Playground

ios - 如何在 swift 2.0 的 UITextfield 中只允许特定的一组数字

java - 您能否将 Kotlin 接口(interface)的范围限定为仅与某些类一起使用?

ios - 无法使用 JSONJoy 解析来自 Socket.IO 的 JSON 数据

ios - 如果我的 DispatchGroup 从未完成会发生什么