Swift String to CChar

时间:2014-06-23 16:17:56

标签: swift string

如何在Swift中获得char / CChar?我需要调用以下方法:

- (void)registerOption:(NSString *)longOption shortcut:(char)shortOption requirement:(GBValueRequirements)requirement;

我可以传递char的ASCII形式,但这很烦人。有没有一种简单的方法可以将字符串中的某个索引获取?

4 个答案:

答案 0 :(得分:8)

您可以将Swift字符串转换为Cstring,然后只抓取第一个(也是唯一的)字符:

var charString = "a"
var ccharOptional = charString.cStringUsingEncoding(NSUTF8StringEncoding)?[0]  // CChar?
var cchar = (charString.cStringUsingEncoding(NSUTF8StringEncoding)?[0])!       // CChar

答案 1 :(得分:1)

使用Swift 3.0:

let cchar = "a".utf8CString[0]

(不确定这实际上是什么时候引入的),

答案 2 :(得分:0)

在swift3(3.0.2)中: let cchar = "abc".cString(using: .utf8)返回CChar数组。

答案 3 :(得分:0)

使用Swift 5,您可以使用以下两种方法之一来从CChar实例中获取String的集合。


#1。使用Swift的{​​{1}}属性

utf8CString具有utf8CString属性。 String具有以下声明:

utf8CString
  

连续存储的以空值结尾的字符串的UTF-8表示形式。

下面的Playground示例代码显示了如何使用var utf8CString: ContiguousArray<CChar> { get }

utf8CString

#2。使用let string = "Café " let bytes = string.utf8CString print(bytes) // prints: [67, 97, 102, -61, -87, 32, -16, -97, -111, -115, 0] 的{​​{1}}方法

Foundation提供StringProtocolcString(using:)方法。 cString(using:)具有以下声明:

String
  

使用给定的编码将字符串的表示形式返回为C字符串。

下面的Playground示例代码显示了如何使用cString(using:)从字符串中获取func cString(using encoding: String.Encoding) -> [CChar]? 的集合:

CChar