swift - 如何将子字符串从 Swift 传递到 C?
问题描述
我有一个值为“7438754876*567”的变量。我从字符串中得到它作为子字符串。我想将此值传递给 c 函数。
void getRechargePinFromDestination(char* rechargeNumber)
{
setRechargeValue(rechargeNumber);
}
正如我已经声明为 char 一样,swift 将其作为 Int8。我怎样才能传递这个值。任何人请帮助我。提前致谢。
解决方案
如果 C 函数不改变传递的字符串,那么您应该将参数声明为const char*
:
void getRechargePinFromDestination(const char* rechargeNumber)
{
// ...
}
现在您可以通过将 Swift 子字符串转换为String
第一个(它会自动转换为临时 C 字符串)来传递 Swift 子字符串:
getRechargePinFromDestination(String(subString))
或与
subString.withCString { getRechargePinFromDestination($0) }
在任何一种情况下,都会使用指向临时C 字符串表示的指针调用 C 函数,该指针仅在函数调用期间有效。
推荐阅读
- html - 我的汉堡菜单不可见。请帮我设计这个
- amazon-web-services - 使用 AWS ALB 阻止 Web 目录
- batch-file - 替换 TXT 文件中的字符串
- android - RXKOTLIN/RXJAVA:使用 Observables 的套接字之间的通信
- java - Mybatis 自定义类型处理程序不起作用:java.lang.NoSuchMethodException: org.springframework.security.core.GrantedAuthority。
() - android - Firebase 身份验证不会在 Flutter 中保留在 iOS 或 Android 上
- swift - 为什么我会遇到此一致性问题?
- javascript - 单击选项时的事件委托,不适用于克隆元素
- c++ - 在 DirectX 正交相机中从深度查看空间位置
- c - 无法理解 c 中的 char malloc()