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语言教程使用指针创建和初始化字符串
Swift3.0语言教程使用指针创建和初始化字符串的更多相关文章
- Swift3.0语言教程使用编码创建和初始化字符串
Swift3.0语言教程使用编码创建和初始化字符串 使用编码创建和初始化字符串 创建和初始化字符串除了可以使用上文中提到的方法外,还可以使用init(coder:)方法,此方法一般不常使用,其语法形式 ...
- Swift3.0语言教程使用Unicode范式标准化获取字符串
Swift3.0语言教程使用Unicode范式标准化获取字符串 Swift3.0语言教程使用Unicode范式标准化获取字符串,在NSString中可以使用4个属性去使用Unicode范式标准化获取字 ...
- Swift3.0语言教程获取字符串编码与哈希地址
Swift3.0语言教程获取字符串编码与哈希地址 Swift3.0语言教程获取字符串编码与哈希地址,以下将讲解字符串中其它内容的获取方法. 1.获取字符串编码 在NSString中可以使用2个属性获取 ...
- Swift3.0语言教程使用占位符格式创建和初始化字符串
Swift3.0语言教程使用占位符格式创建和初始化字符串 Swift3.0语言教程使用占位符格式创建和初始化字符串在很多的编程语言中都存在占位符,占位符就是为指定的内容占留一个位置.此功能一般在开发者 ...
- Swift3.0语言教程使用字符串创建和初始化字符串
Swift3.0语言教程使用字符串创建和初始化字符串 Swift3.0语言教程使用字符串创建和初始化字符串,在编程语言中,字面值是很常见的数据描述形式.人们可以通过字面所表达的意思,获知其含义,尤其是 ...
- Swift3.0语言教程字符串与文件的数据转换
Swift3.0语言教程字符串与文件的数据转换 Swift3.0语言教程字符串与文件的数据转换,如果想要对字符串中的字符进行永久保存,可以将字符串中的字符写入到文件中.当然,开发者也可以将写入的内容进 ...
- Swift3.0语言教程使用路径字符串
Swift3.0语言教程使用路径字符串 Swift3.0语言教程使用路径字符串,路径其实是字符串的一种,我们称为路径字符串.本小节将讲解如何使用路径字符串. 1.组合路径 开发者可以将数组快速的组合成 ...
- Swift3.0语言教程分割字符串与截取字符串
Swift3.0语言教程分割字符串与截取字符串 Swift3.0语言教程分割字符串 如果想要快速的创建一个数组,我们可以将字符串进行分割,分割后的内容将会生成一个数组.在NSString中有两个分割字 ...
- Swift3.0语言教程字符串与URL的数据转换与自由转换
Swift3.0语言教程字符串与URL的数据转换与自由转换 Swift3.0语言教程字符串与URL的数据转换 Swift3.0语言教程字符串与URL的数据转换与自由转换,字符串中的字符永久保存除了可以 ...
随机推荐
- 【leetcode】Populating Next Right Pointers in Each Node I & II(middle)
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...
- 【python】入门学习(五)
字符串: 正索引,从0开始 和 负索引,从-1开始 >>> s = 'apple' >>> s[0] 'a' >>> s[1] 'p' >& ...
- struts配置文件中如何从一个package的action跳到另一个package中的某个action
<package name="pack1" namespace="/test1" extends="struts-default"&g ...
- 警告:Assigning to 'id<Delegate>' from incompatible type 'ViewController *const_st
原因: 你自己写了代理,设置了 delegate = self.但是self 没有遵守这个协议 只需要遵守这个协议就可以消除警告.
- Spring自动装配与扫描注解
1 javabean的自动装配 自动注入,减少xml文件的配置信息. <?xml version="1.0" encoding="UTF-8"?> ...
- chrome进入控制台时自动进入断点模式的解决方法
简单粗暴,不知道为什么,去掉那个√就好了
- 魔法禁书目录2:回家(codevs 3024)
题目描述 Description 大妈打完三战回家,我知道他是怎么回来的,欧洲到日本有L个站点他决定乘坐恰好n次飞机(不是学院都市的超音速飞机)和m次火车来从第一个站点到达最后一个站点.但是有一点很重 ...
- Innodb之监控Buffer pool Load progress
你可以使用PERFORMANCE SCHEMA中的相关信息监控BUFFER POOL状态加载进程. 1. 启用 stage/innodb/buffer pool load instrument: 2. ...
- iOS - 富文本AttributedString
最近项目中用到了图文混排,所以就研究了一下iOS中的富文本,打算把研究的结果分享一下,也是对自己学习的一个总结. 在iOS中或者Mac OS X中怎样才能将一个字符串绘制到屏幕上呢? ...
- Delphi中exit、break、continue等跳出操作的区别
Delphi中表示跳出的有break,continue,abort,exit,halt,runerror等 1.break 强制退出最近的一层循环(注意:只能放在循环里:而且是只能跳出最近的一层循环) ...