首页 > 解决方案 > 如何将子字符串从 Swift 传递到 C?

问题描述

我有一个值为“7438754876*567”的变量。我从字符串中得到它作为子字符串。我想将此值传递给 c 函数。

void getRechargePinFromDestination(char* rechargeNumber)
{
    setRechargeValue(rechargeNumber);
}

正如我已经声明为 char 一样,swift 将其作为 Int8。我怎样才能传递这个值。任何人请帮助我。提前致谢。

标签: swiftinterop

解决方案


如果 C 函数不改变传递的字符串,那么您应该将参数声明为const char*

void getRechargePinFromDestination(const char* rechargeNumber)
{
     // ...
}

现在您可以通过将 Swift 子字符串转换为String第一个(它会自动转换为临时 C 字符串)来传递 Swift 子字符串:

getRechargePinFromDestination(String(subString))

或与

subString.withCString { getRechargePinFromDestination($0) }

在任何一种情况下,都会使用指向临时C 字符串表示的指针调用 C 函数,该指针仅在函数调用期间有效。


推荐阅读