Erstellen Sie UnsafeMutablePointer <UnsafeMutablePointer <Int8>?>! In Swift für C char ** hoge

Setzen Sie Swift String auf UnsafeMutablePointer \ <UnsafeMutablePointer \ ?>!

sample.swift


import Foundation

let options = ["-m" : 2, "-n" : 3]

var args : [String] = []
for (option_name, value) in options {
    args.append(contentsOf: [option_name, value])
}
var cargs: [UnsafeMutablePointer<Int8>?] = args.map { strdup($0) }
initialize(Int32(args.count), &cargs)
for ptr in cargs { free(ptr) }

sample.c


void initialize(int argc, char **argv) {
    //verschiedene
}

See: https://developer.apple.com/documentation/swift/unsafemutablepointer

Ändern Sie den UnsafeMutablePointer \ von C in Swifts String

sample.swift


let foo = get_foo()
let result = String(cString: foo!) // TODO:Null sollte sicher sein
print(result)

sample.c


char* get_foo() {
    //Rückkehr
}

Recommended Posts

Erstellen Sie UnsafeMutablePointer <UnsafeMutablePointer <Int8>?>! In Swift für C char ** hoge
Behandle C char ** gut mit Swift
Übergeben Sie C-Sprache char * an Swift
Einführung in Zeichen und Zeichenfolgen in C-Sprache für Swift Programmer
Erstellen Sie in Salesforce ein Tool zur Namensidentifizierung
C-Makro für watchOS und Swift API Availability
C-Makro für die Verfügbarkeit von tvOS und Swift API