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:)方法建立和初始化字符串。string

import Foundationit

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

print(str!)字符编码

运行结果以下:table

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语言教程使用指针建立和初始化字符串

相关文章
相关标签/搜索