如何在Swift中获取CString(UTF8String)的长度?

时间:2015-06-03 22:40:41

标签: swift c-strings string-length

我有一个CString

let parameterCString = (parameter as NSString).UTF8String

现在我想找到我想要使用的参数CString的长度

let UTF8parameter  = NSData(bytes: parameterCString, length: )

并且这也意味着相同

let UTF8parameter:NSData = parameter.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!

2 个答案:

答案 0 :(得分:3)

您可以使用strlen()函数。

let aString:String = "myString"
let aCString = aString.cStringUsingEncoding(NSUTF8StringEncoding)
let length = strlen(aCString)// returns a UInt
let UTF8parameter = NSData(bytes: aCString, length: length)

答案 1 :(得分:1)

如果你想要它的UTF8,最简单的方法是

  public class Email {
    ...
    public static implicit operator Email(String value) {
      if (...) // validate value here
        return null; // <- not an actual Email

      // Email
      return new Email(value);
    }
  }

  ....

  Email email = "SomeAddress@SomeServer.com";

  if (email != null) {
    ...
  }

如果你想在结尾处使用空字节

let param = "my Swïft stríng"
let utf8Bytes = [UInt8](param.utf8)
let utf8Length = utf8Bytes.count // 17
let utf8Data = NSData(bytes: utf8Bytes, length: utf8Length)