Ich habe ein NSArray<NSString*>*
Objekt, und ich muss eine C-API aufrufen, die ein Array von Zeichenfolgen wie char**
übernimmt.Wie konvertiert man ein Array von NSString in ein Array von C-Strings?
Was ist der beste Weg, dies zu tun? Die wichtige Anmerkung ist die c-strings darf keine const
Modifier, so etwas wie das folgende ist nicht gut genug, da UTF8String
kehrt const char*
:
NSArray<NSString*>* names = ...;
int len = args.count;
char* cNames[len];
for(int i = 0; i < len; i++) {
cNames[i] = names[i].UTF8String;
};
Wird die C-API den Inhalt der Zeichenfolgen ändern? – kennytm
Ich glaube nicht, aber in der Theorie könnte es. – zeroimpl
Wenn dies der Fall ist, wird nichts das ursprüngliche NSArray ändern. Das obige ist im Grunde der richtige Ansatz. Sie möchten nur die langweiligen 'malloc' und' strncpy' hinzufügen, um eine vollständige Kopie zu erstellen. Die Antwort ist: das obige, plus C. –