2.字串型別
2.1.shortstring
shortstring 又稱為短字串(相對的,ansistring、widestring、unicodestring 稱為長字串),其實質上是乙個編譯器內建的字元陣列,類似(不是等效)於以下型別:
type
shortstring = array[0..255] of ansichar;
其容納由 256 個 ansichar 組成的字串,但第乙個字元有特殊用途,所以shortstring 型別的字串長度不可超過 255byte。
shortstring 的第乙個位元組的值等於字串的實際長度。故而獲取 shortstring 字串實際長度的方法有 2 種:
一是利用標準函式 length();
二是直接利用第 1 個位元組的值。
例如:var
str;shortstring;
begin
str := 'abcdefg';
writeln(inttostr(integer(str[0]))); //顯示 7
writeln(inttostr(length(str))); //顯示 7
end.
2.2ansistring
ansistring 型別也被稱為長字串。此型別的字串由ascii 擴充套件字符集組成。ansistring 型別實質上是乙個指標型別,指向字串首個字元的位址,也就是第13個位元組(delphi2009以後)。利用標準函式 sizeof()可知此型別變數在記憶體中占用 4 個位元組。為了節約記憶體,delphi 將ansistring 字串的字串本身分配在堆中,而在棧中留下一指向字串的指標,這個指標就是 ansistring 型別的變數。使用字串索引時有兩點值得注意:索引應當從 1 開始。 12
3456
78910
1112
1314
1516
1718
1920
2122
2324
2526
2728
a803
0100
ffff
ffff
0f00
0000
4875
616e
674a
6163
6b79
4141
4142
4100
**頁字元寬度
引用次數
字串的字元數
字串實際內容
結束符9361-1
15hua
ngja
ckya
aaba
#0$03a8就是936,
查msdn
936 - gb2312
每個字元所佔
的位元組數
(ansi為1
)對於常量字串,引用計數總是-1,delphi並未作出優化。當字串為變數時計數大於等於1。
3.widestring
widestring 與 ansistring 基本一樣,除以下幾點:
4.unicodestring
unicodestring 與 ansistring 基本相同,唯一的區別在於前者容納的字串由unicode 字符集中的字元組成。事實上 unicodestring 的出現更多是為了彌補 widestring在處理 unicode 編碼時的不足。在絕大多數場合,unicodestring 比 widestring 更適合。但編寫 com 程式時,只能選擇 widestring。注意對 unicodestring 字串進行索引時得到的也是某個字元的值。
5.string
string 為 delphi 的保留字,用作 unicodestring 型別的乙個別名。
6.ucs4string
usc4string 型別容納 usc4 字符集中的字元組成的字串。其宣告如下:
type
ucs4string = array of ucs4char;
此型別的字串基本不用。在筆者看來,此型別現時只有兩個用途:其一為方便delphi 在未來遷移時花費最小的代價,畢竟 ucs4 編碼是將來的趨勢;其二是用於各種編碼的字串的轉換,其它編碼的字串轉化至 ucs4string 不會有任何的資料丟失,故而此型別很適合作為字串轉換時的中間格式。
7.codepaged ansistring
從前面的敘述可知 ansistring 用於容納擴充套件 ascii 字符集字元形成的字串。事實上,這種說法並不精確。較為精確的說法是:ansistring 能夠容納所有編碼格式的字串,只要計算機上安裝了相應的字符集,但只有 ansistring 字串的編碼為本地擴充套件ascii 字符集時才能被正確顯示。
8.rawbytestring
rawbytestring 的原型為:
type
rawbytestring = type ansistring($ffff);
注意:$ffff 不代表現有的任何編碼方式。
使用 rawbytestring 時注意:作為函式引數時,rawbytestring 只能用作 const 或value 方式傳遞的引數,不可用於 var 方式傳遞。
9.nul 結尾字串
delphi 不存在 c 風格的 null 結尾的字串。作為替代,可以使用以下 2 種方法來模擬:
注意:使用字元陣列替代字串時應保證開啟了指令,此指令預設為開啟狀態。
python基礎篇之資料型別
python 中有四個非常常用的資料型別,分別是字串,列表,元組和字典。下面就來介紹這四個基本的資料型別。python 對字串的處理是非常強的,所以掌握一些 python 對字串的基本操作是非常有必要的.在 python2 裡面預設都是用 unicode 編碼的,而 windows 裡面的檔案預設是...
c c 基礎篇之資料型別轉換
c c 常見的資料型別轉換 1.常見的單類基本型別轉換 1 強制型別轉換 如 int a int 9.87 結果a 9 char c char 97 結果為c a 特別注意的是,在c 11中,增加了auto關鍵字,轉換型別相對智慧型化 auto c int 9.87 結果c 9 2 string與c...
基礎之資料型別
基本型別包括位元組型 char 整型 int 和浮點型 float double 定義基本型別變數時,可以使用符號屬性signed unsigned 對於char int 和長度屬性short long 對於int double 對變數的取值區間和精度進行說明。下面列舉了dev c 下基本型別所佔位...