gpt4 book ai didi

struct - 将结构内的 C 字符串转换为 Swift 字符串

转载 作者:搜寻专家 更新时间:2023-10-31 22:03:55 26 4
gpt4 key购买 nike

我在 Swift 应用程序中使用现有的 C 库,并尝试将 C 字符缓冲区转换为 Swift 字符串。

桥接.h

typedef struct { char mfg[8]; char model[8]; } motorcycle;

void GetMotorcycle(motorcycle *m);

示例.swift

var cycle = motorcycle(mfg: (0,0,0,0,0,0,0,0), model: (0,0,0,0,0,0,0,0));
GetMotorcycle(&cycle)
var manufacturer : String = String.fromCString(cycle.mfg) // Error

这会产生“找不到接受所提供参数的‘fromCString’的重载”

由于 Swift 将 C 字符数组视为元组,我找不到将其转换为 Swift 字符串的方法。

最佳答案

好吧,至少 C 字符数组只有八个字符长,因为目前没有办法遍历元组。转换方法如下:

func char8ToString(tuple: (CChar, CChar, CChar, CChar, CChar, CChar, CChar, CChar)) -> String {
let arr: unichar[] = [unichar(tuple.0), unichar(tuple.1),
unichar(tuple.2), unichar(tuple.3),
unichar(tuple.4), unichar(tuple.5),
unichar(tuple.6), unichar(tuple.7)]
let len = arr.reduce(0) { $1 != 0 ? $0 + 1 : $0 }
return NSString(characters: arr, length: len)
}

var manufacturer: String = char8ToString(cycle.mfg)

希望我们能尽快获得语言支持,以更好的方式处理这种情况!

关于struct - 将结构内的 C 字符串转换为 Swift 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24376829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com