C++Build學習2

baiyibin0530發表於2016-05-18
C++ Builder 中的字串型別可分大概分為ANSI字串與Null-Terminated字串兩類;
前者是C++Builder特有的字串型別(和Delphi中的String型別是一樣的),後者是C語言中慣用的以零字元作為字串結束的型別。


C++ Builder 中的String字串型別又分為字串(AnsiString)、寬字串(WideString)。




1、建立AnsiString 變數的方式
1)Buf = AnsiString();即為建立一個名為Buf的新字串變數,且其內容為空的。
2)AnsiString(const char* src);使用字元指標src的內容建立一個String變數。
Sring Buf;
char *ch = "123456";
Buf = AnsiString(ch);
Buf的結果即使“123456”;原來的字元指標所指的內容已經被建立為一個AnsiString變數了。
3)AnsiString(const  AnsiString& src);
將另一個也是String 型別的變數複製一份成為另一個新的String型別變數。
4)AnsiString(const char* src,unsigned char len);
將使用字元指標src的內容建立一個長度為len的String變數。
String Buf;
char *ch = "123456";
Buf = AnsiString(ch,4);
Buf的結果即是“1234”,原來的字元指標所指的內容的長度為4的字元已經被建立為一個AnsiString變數了,超出的部分被剪掉。若長度大於原來的長度,則不足的長度會被補上空白。
5)AnsiString(int src);
將整數src轉成一個String變數。
String Buf;
int src = 123;
Buf = AnsiString(src);
Buf字串的內容就是“123”,數值123被轉成字串“123”


2、序列通訊中常用的AnsiSting字串處理函式
1)AnsiLastChar:
返回字串中的最後一個字元,其型別是字元指標(char*)
String Buf;
char *ch;
Buf = "ABCDEF";
ch = Buf.AnsiLastChar();
ch的運算結果即為“F”
2)AnsiPos(const AnsiString&subStr):
返回在String字串中的子字串subStr的開始位置。
String Buf,subStr;
int len;
Buf = "ABC123456";
subStr = "34";
len = Buf.AnsiPos(subStr);
在Buf中subStr的開始位置,len的結果將返回6.
3)c_str():
將String型別的字串轉換為以零字元為結尾的(null-terminated)字串。
String Buf;
char *str;
Buf = "ABC123456";
str = Buf.c_str();
4)data():
和c_str()函式一樣,均是返回指標,不過,當原來的String型別變數的內容是空的,則此函式將返回NULL。
5)Delete(int index,int count):
將原字串由第index位置開始刪掉count個,其中的index由1開始算起。
String Buf,subStr;
Buf = "ABC123456";
subStr = Buf.Delete(4,3);
結果將會是 “ABC456”
6)FloatToStrF(long double value, TStringFloatFormat,int precision, int digits);
將數值value ,以format格式,precision 的位數及digits小數點位數進行轉換,轉換成String型別的變數。
TStringFloatFormat為一列舉型別,其原型是enum TStringFloatFormat{sffGeneral,sffExponent,sffFixed,sffNumber,sffCurrency};共有5種不同的數值轉換選擇。
String Buf,subStr;
float a;
a = 12.34;
Buf = Buf.FloattToStrF(a,0,7,3);
7)FormatFloat(const AnsiString& format, const long double& value);將一個數值依format的格式轉換為字串。
String Buf;
float a;
a = 12.34;
Buf = Buf.FormatFloat("0.000",a);
Buf最後的結果將會是“12.340”
8)Insert(const AnsiSting& str,int index):
將str字串自原字串的第index位置插入,返回一個新的字串。
String Buf,subStr;
Buf = "ABC123";
subStr = Buf.Insert("ARE",4);
結果是“ABCARE123”
9)IntToHex(int value,int digits):
將數值value轉換成十六進位制數值字串,且使用digits個字元。
String Buf;
int a;
a = 123;
Buf = Buf.IntToHex(a,2);
Buf將會變成字串“7B”
String Buf;
int a;
Buf = "123ABC";
a = Buf.Length();


a的結果是6.
10)LowerCase():
此函式將返回一個新的字串,該字串將原字串中的字元全部轉換成小寫。
11)Pos(const AnsiString& subStr):
返回在String字串中的字串subStr的開始位置。
12)StringOfChar(char ch,int count):
返回一個字串,該字串將字元ch填入count個
String Buf;
Buf = AnsiString::StringofChar(`A`,10);
Buf結果將會是含有10個A字元的字串。
13)SubString(int index,int count);
String Buf,subStr;
Buf = "This is Tesst";
subStr = Buf.SubString(2,2);
結果是"hi"
14)ToDouble():將字串轉為浮點數。
15)ToInt():將字串轉化為整數
16)Trim():將字串前後的空白去掉
17)TrimLeft():將字串的左邊空白去掉
18)UpperCase():此函式將返回一個新的字串,該字串將原字串中的字元全部轉換成大寫。