16.C/C++語言在CB中的一些特定用法
2)AnsiString是從Delphi中引進來的嗎?
答: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中常用)
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語言是使用字符來組成字符串的(字符串末尾必須有’/0’做為結束標志),其格式和AnsiString並不相同。由於在CB中我大量使用AnsiString格式,所以有時也難免要進行一些轉換,我們可以通過下列三種方法來實現:
方法1:AnsiString字符串轉換成字符串數組:
先利用AnsiString類別中的c_str()方法轉換成傳統字符串數組,再用strcpy拷貝,將它拷貝到字符數組中去:
char s1[20];
strcpy(s1,Edit1->Text.c_str());
方法2:AnsiString轉換成傳統字符串可以利用字符指針來實現:
可以通過字符指針來實現:
char *s;
s=Edit->Text.c_str();
方法3:利用字符指針實現傳統字符串轉換成AnsiString:
char *s=”試一試,看看能不能成功!”;
Edit->Text=s;