<分区>
我正在尝试制作一个 C 风格的字符指针数组,如下所示:
*const argv[]
我发现我必须使用 UnsafePointer<UnsafeMutablePointer<Int8>>
但我不知道如何初始化它。
如何将这个普通数组映射到 UnsafePointer<UnsafeMutablePointer<Int8>>
:
let argv = ["/usr/bin/printf", "BBB"]
谢谢
标签 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 - 检查 AnyObject 是否为空或没有键或该键的值是否为空
ios - 当显示 UIAlertViewController 时,Viewcontroller 将另一个 View Controller 显示为背景层?
ios - 如何在 UITableView 中将文件夹的文件夹显示为列表 - Swift
swift - 通过属性崩溃引用另一个协议(protocol)的协议(protocol) SourceKitService 和 Playground
ios - 如何在 swift 2.0 的 UITextfield 中只允许特定的一组数字
java - 您能否将 Kotlin 接口(interface)的范围限定为仅与某些类一起使用?