16.C/C++語言在CB中的一些特定用法
2)AnsiString是從Delphi中引進來的嗎?
<!-- frame contents -->
<!-- /frame contents -->
答:CB的核心組件VCL是用Object Pascal語言寫出的,所以CB的VCL組件的屬性有很多都是使用long string,例如:Text、 Name、Caption等屬性都是使用Object Pascal的long string。基於此關系,CB只好建立了和Object Pascal的long string相應的類別,我們將它稱為AnsiString。
3)AnsiString與String有什麼區別?
答: C++ Builder在Sysdefs.h頭文件中有這樣的定義:
typedef AnsiString String;
從這一點在看他二者是完全一樣的,只是書寫起來後者更方便一些,前者是意圖更明了一些。
4)能介紹一下AnsiString類的一些常見函數及其用法嗎?
答:當然可以了,下面就常見函數做一下簡單介紹:
成員函數
語法
功能
c_str
char *_fastcall c_str() const
返回字符串數據的指針
Delete
void _fastcall Delete(int index,int count)
由index處開始刪除count個字符
Insert
void _fastcall Insert(const AnsiString& str,int index)
由index處開始插入字符str到原字符串中
IsEmpty
bool _fastcall IsEmpty() const
返回字符串是否為空,true表示空字符串
Length
int _fastcall Length() const
返回字符串長度
LowerCase
AnsiString _fastcall LowerCase() const
將字符串中的大寫字母改寫成小寫
UpperCase
AnsiString _fastcall UpperCase() const
將字符串中的小寫字母改寫成大寫
Pos
int _fastcall Pos(cont AnsiString& substr)const;
找出子字符串在原字符串中由第幾個位置開始
SubString
AnsiString _fastcall SubString(int index,int count)const
返回由index處向後取count個字符
ToDouble
double _fastcall ToDouble() const
將字符轉成雙精度數值
ToInt
int _fastcall ToInt() const
將字符轉成整形
IntToStr
AnsiString _fastcall IntToStr(int Value)
將整形轉成字符串
Trim
AnstString _fastcall Trim() const
返回一個新的字符串,它會將原字符串前後空白或控制字符清除後再返回
WideChar
wchar_t
fastcall WideChar(wchart* dest,int destsize)const
轉換AnsiString到一個寬字符數組(COM中常用)
更多內容請看C/C++技術專題專題,或
5)AnstString成員函數與傳統字符串函數有何不同之處?
答:我們可以通過二者的一個對照表來查看他們的之間的不同之處:
AnsiString成員函數
功能
傳統字符串函數
=
字符串拷貝
strcpy
+=
字符串合並
strcat
+
字符串連接
無
==,!+=,<,<=,>,>=
字符串比較
strcmp
c_str()
相互轉換
無,但可以利用指針實現
Delete
刪除子字符串
無
Insert
插入子字符串
無
Length
求字符串長度
strlen
LowerCase
字母轉成小寫
strlwr
Pos
找出子字符串
strstr
SetLength
設置字符串長度
無
ToInt
轉成整形
無
ToDouble
轉成雙精度
sprintf
UpperCase
字母轉成大寫
strupr
6)如何實現傳統字符串與AnsiString字符串的相互轉換?
答:傳統的C語言是使用字符來組成字符串的(字符串末尾必須有’