如何在Swift中获得char
/ CChar
?我需要调用以下方法:
- (void)registerOption:(NSString *)longOption shortcut:(char)shortOption requirement:(GBValueRequirements)requirement;
我可以传递char的ASCII形式,但这很烦人。有没有一种简单的方法可以将字符串中的某个索引获取?
答案 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
的集合。
Swift
的{{1}}属性 utf8CString
具有utf8CString
属性。 String
具有以下声明:
utf8CString
连续存储的以空值结尾的字符串的UTF-8表示形式。
下面的Playground示例代码显示了如何使用var utf8CString: ContiguousArray<CChar> { get }
:
utf8CString
let string = "Café "
let bytes = string.utf8CString
print(bytes) // prints: [67, 97, 102, -61, -87, 32, -16, -97, -111, -115, 0]
的{{1}}方法 Foundation提供StringProtocol
和cString(using:)
方法。 cString(using:)
具有以下声明:
String
使用给定的编码将字符串的表示形式返回为C字符串。
下面的Playground示例代码显示了如何使用cString(using:)
从字符串中获取func cString(using encoding: String.Encoding) -> [CChar]?
的集合:
CChar