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语言教程使用指针创建和初始化字符串
相关文章
- Quartz教程四:Trigger
- Java NIO系列教程(四) Scatter/Gather
- python 在linux系统的安装教程
- AOS编排语言系列教程(五):创建安全组SecurityGroup
- AOS编排语言系列教程(三):创建子网Subnet
- SQLite使用教程10 运算符
- ExtJS 4.2 教程-05:客户端代理(proxy)
- 隐写工具zsteg安装及使用教程
- oracle sql语言模糊查询--通配符like的使用教程
- 【OpenCV-Python】教程:3-10 直方图(1)查找显示分析
- 【第3版emWin教程】第25章 emWin6.x的JPEG图片显示(硬件解码)
- 【STM32F407的DSP教程】第18章 DSP控制函数-更好用的SIN,COS计算
- React Router 使用教程
- 家政服务小程序实战教程04-页面传参及表单容器
- AOS编排语言系列教程(四):创建弹性云服务器ECS
- 【一天一门编程语言】Pascal 语言程序设计极简教程
- 《Kotlin极简教程》第3章 Kotlin语言基础
- Surface Pro 4 系统优化全教程及QA
- 《Web安全渗透全套教程(40集)》学习笔记 | SQL注入攻击及防御
- ac1st24.dll文件丢失怎么解决教程
- 信息系统项目管理师教程读书笔记(一)
- 【学习教程】POI及EasyExcel整理
- 擎创技术流 | ClickHouse实用工具—ckman教程(5)
- Java的学习心得和知识总结(一)| JDK安装教程