在我的swift应用程序项目中,我必须与C API进行交互。其中一个C函数将char指针作为输入,因此我必须将我的swift字符串转换为char指针。但我不知道如何正确地做到这一点。将Swift字符串转换为CChar指针
这里是我的示例代码:
var user_id_ptr : UnsafeMutablePointer<CChar> = UnsafeMutablePointer.alloc(100)
var cusID = "123"
user_id_ptr.memory = cusID.cStringUsingEncoding(NSUTF8StringEncoding)!
我总是得到这个错误: Cannot assign a value of type '[CChar]' to a value of type 'CChar'
我也查了答案:UnsafeMutablePointer<Int8> from String in Swift
上面的回答是我的略有不同。 上面的示例仅适用于一个字符,但我有一个字符串。此外,我必须传递多个参数给函数,我不能使用let result =“N”.withCString {dgeev_(UnsafeMutablePointer($ 0),UnsafeMutablePointer($ 0),& N,...)}之类的东西。请给我演示一下如何完成这个例子。
取决于C函数是采用'char *'还是'const char *',要么是http://stackoverflow.com/questions/27876179/unsafemutablepointerint8-from-string-in-swift或http:// stackoverflow.com/questions/27063569/string-value-to-unsafepointeruint8-function-parameter-behavior应该解决你的问题。 –
感谢您的回答,但我仍然有一些问题。 u post的例子只有一个字符,但我有一个字符串。此外,我必须传递多个参数给函数,我不能使用'let result =“N”.withCString {UnsafeMutablePointer($ 0),UnsafeMutablePointer($ 0),&N,...)012ge} '。请给我演示一下如何完成这个例子。 –
相同的技术适用于(多个)字符串,但为了您的方便,我添加了它作为答案:) –