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

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

概述Swift3.0语言教程使用指针创建和初始化字符串 Swift3.0语言教程使用指针创建和初始化字符串苹果的Swift团队花了不少功夫来支持C的一些基础特性。C语言中为我们提供了指针,Swift也不例外,开发者可以使用指针去创建和初始化字符串。 (1)在NSString中init(bytes:length:encoding:)方法可以从给定字符串按照指定获取方向,得到指定个数的字符,然后使用这些字

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>,enCoding: UInt,freeWhenDone freeBuffer: Bool)

其中,参数说明如下:

qbytes:用来指定一个变量指针。

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

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

qflag:用来对存储器中数据的释放进行设置。当设置为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,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)

其中,参数说明如下:

qcharacters:用来指定一个变量指针。

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

qfreeBuffer:用来对存储器中数据的释放进行设置。当设置为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语言教程使用指针创建和初始化字符串

总结

以上是内存溢出为你收集整理的Swift3.0语言教程使用指针创建和初始化字符串全部内容,希望文章能够帮你解决Swift3.0语言教程使用指针创建和初始化字符串所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1070700.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存