I have a c function which I access from a bridging header that returns a const char*
:
const char* get_c_string();
I then try t
Your Swift code is correct, you can shorten it slightly to
// Swift 2:
let str = String.fromCString(get_c_string())
// Swift 3:
let str = String(cString: get_c_string())
However, you must ensure that the pointer returned from the C function is still valid when the function returns. As an example
const char* get_c_string() {
char s[] = "abc";
return s;
}
returns the address of a local stack variable, which is undefined behavior.
You might have to duplicate the string (and then think of when and where to release the memory).