zoukankan      html  css  js  c++  java
  • Swift3.0语言教程使用指针创建和初始化字符串

    Swift3.0语言教程使用指针创建和初始化字符串

    Swift3.0语言教程使用指针创建和初始化字符串苹果的Swift团队花了不少功夫来支持C的一些基础特性。C语言中为我们提供了指针,Swift也不例外,开发者可以使用指针去创建和初始化字符串。

    (1)在NSString中init(bytes:length:encoding:)方法可以从给定字符串按照指定获取方向,得到指定个数的字符,然后使用这些字符创建和初始化字符串。其语法形式如下:

    convenience init?(bytes: UnsafePointer<Void>, length len: Int, encoding: UInt)

    其中,bytes用来指定一个常量指针,length用来从使用的字节中指定字节数,encoding用来指定应用在字节中的字符编码。

    【示例1-9】以下将使用init(bytes:length:encoding:)方法创建和初始化字符串。

    import Foundation

    var str=NSString(bytes: "Hello,World",length: 8,encoding: String.Encoding.utf8.rawValue)

    print(str!)

    运行结果如下:

    Hello,Wo

    (2)init(bytesNoCopy:length:encoding:freeWhenDone:)方法也是从给定字符串按照给定获取方向,得到指定个数的字符,通过这些字符创建和初始化字符串,但是此方法需要对存储器中数据的释放进行设置。其语法形式如下:

    convenience init?(bytesNoCopy bytes: UnsafeMutablePointer<Void>, length len: Int, encoding: UInt, freeWhenDone freeBuffer: Bool)

    其中,参数说明如下:

    q  bytes:用来指定一个变量指针。

    q  len:用来用来从使用的字节中指定字节数。

    q  encoding:用来指定应用在字节中的字符编码。

    q  flag:用来对存储器中数据的释放进行设置。当设置为true时,可以将存储器中不再使用的数据进行释放,反之,不释放。

    【示例1-10】以下将使用init(bytesNoCopy:length:encoding:freeWhenDone:)方法创建和初始化字符串。

    import Foundation

    var a=NSString(string: "Hello,World")

    var b=a.utf8String!

    var c:UnsafeMutablePointer<Void>=UnsafeMutablePointer<Void>(b)

    var str=NSString(bytesNoCopy: c,length: 8,encoding: String.Encoding.utf8.rawValue,freeWhenDone: true)

    print(str!)

    运行结果如下:

    Hello,Wo

    (3)init(characters:length:)方法可以从一个C语言字符串获得指定个数的元素,通过这些元素对字符串进行创建和初始化,其语法形式如下:

    convenience init(characters: UnsafePointer<unichar>, length: Int)

    其中,characters用来指定一个常量指针,length用来从使用的字符中指定字符个数。

    【示例1-11】以下将使用init(characters:length:)方法创建和初始化字符串。

    import Foundation

    let str1=NSString(string: "Hello")

    let char:[unichar]=[str1.character(at: 0),str1.character(at: 1),str1.character(at: 2),str1.character(at: 3),str1.character(at: 4)]

    var str2=NSString(characters: char,length: 3)

    print(str2)

    运行结果如下:

    Hel

    (4)init(charactersNoCopy:length:freeWhenDone:)方法也是从一个C语言字符串获得指定个数的元素,通过这些元素对字符串进行创建和初始化,但是此方法需要对存储器中数据的释放进行设置。其语法形式如下:

    convenience init(charactersNoCopy characters: UnsafeMutablePointer<unichar>, length: Int, freeWhenDone freeBuffer: Bool)

    其中,参数说明如下:

    q  characters:用来指定一个变量指针。

    q  length:用来从使用的字符中指定字符个数。

    q  freeBuffer:用来对存储器中数据的释放进行设置。当设置为true时,可以将存储器中不再使用的数据进行释放,反之,不释放。

    【示例1-12】以下将使用init(charactersNoCopy:length:freeWhenDone:)方法创建和初始化字符串。

    import Foundation

    let a=NSString(string: "Swift")

    var b:[unichar]=[a.character(at: 0),a.character(at: 1),a.character(at: 2),a.character(at: 3),a.character(at: 4)]

    var str=NSString(charactersNoCopy: &b,length: 3,freeWhenDone:true)

    print(str)

    运行结果如下:

    Swi

    (5)init(utf8String:)方法可以使用UTF8格式的字符串创建和初始化一个字符串,其语法形式如下:

    convenience init?(utf8String nullTerminatedCString: UnsafePointer<Int8>)

    其中,nullTerminatedCString用来指定一个常量指针。

    【示例1-13】以下将使用init(utf8String:)方法创建和初始化字符串。

    import Foundation

    var str=NSString(utf8String: "Swift")

    print(str!)

    运行结果如下:

    Swift

    (6)init(cString:encoding:)方法可以从一个C语言字符串获得元素,通过这些元素对字符串进行创建和初始化,其语法形式如下:

    convenience init?(cString nullTerminatedCString: UnsafePointer<Int8>, encoding: UInt)

    其中,nullTerminatedCString用来指定一个常量指针,encoding是nullTerminatedCString的编码。

    【示例1-14】以下将使用init(cString:encoding:)方法创建和初始化字符串。

    import Foundation

    var str=NSString(cString: "Hello",encoding: String.Encoding.utf8.rawValue)

    print(str!)

    运行结果如下:

    Hello

    Swift3.0语言教程使用指针创建和初始化字符串

  • 相关阅读:
    MongoDB 创建数据库
    生成树状结构
    苹果微信内置浏览器cookie
    AutoMapper
    MongoDB单表导出与导入
    CultureInfo中重要的InvariantCulture
    utf-8编码引起js输出中文乱码的解决办法
    自建的用户登录执行数据库邮件出现错误
    [转译]5种方法提高你网站的登录体验
    化繁为简——网易云音乐WP1.0设计思考
  • 原文地址:https://www.cnblogs.com/daxueba-ITdaren/p/5980082.html
Copyright © 2011-2022 走看看