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

相關文章
相關標籤/搜索