Conversion de const char * en chaîne Swift

J’ai une fonction ac à laquelle j’ai access à partir d’un en-tête de pontage qui retourne un const char* :

 const char* get_c_ssortingng(); 

J’essaie ensuite de le convertir en chaîne rapide:

 let str = Ssortingng.fromCSsortingng(UnsafePointer(get_c_ssortingng())) print(str) 

… mais cela n’imprime que des ordures:

 Optional("\u{14}\0\0") 

Je peux trouver comment passer la chaîne Swift en C mais pas l’inverse. Comment puis-je convertir un caractère const char* en chaîne Swift?

Merci!

Votre code Swift est correct, vous pouvez le raccourcir légèrement pour

 // Swift 2: let str = Ssortingng.fromCSsortingng(get_c_ssortingng()) // Swift 3: let str = Ssortingng(cSsortingng: get_c_ssortingng()) 

Toutefois, vous devez vous assurer que le pointeur renvoyé par la fonction C est toujours valide au retour de la fonction. Par exemple

 const char* get_c_ssortingng() { char s[] = "abc"; return s; } 

renvoie l’adresse d’une variable de stack locale, qui est un comportement indéfini.

Vous devrez peut-être dupliquer la chaîne (puis penser au moment et à l’endroit où libérer la mémoire).