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
將字串中的小寫字母改寫成大寫
posint _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;
(未完待續)
C Builder 初學問與答 十六
16 c c 語言在cb中的一些特定用法 2 ansistring是從delphi中引進來的嗎?答 cb的核心元件vcl是用object pascal語言寫出的,所以cb的vcl元件的屬性有很多都是使用long string,例如 text name caption等屬性都是使用object pas...
C Builder初學問與答1
一直以來都想寫一點為bcb初學者快速入門的東西,前不久寫了幾篇 閒談bcb 想把自己學習bcb中如何來解決難點的方法說給大家,沒想到被罵得不成樣子。本想不寫了,但覺得這些東西留下來能做什麼呢?還是用另一種方法來重新演譯我的思維吧,最近有些忙,那幾篇沒有寫完的文章,我也會盡快寫完的,至於 深入qr 我...
C Builder初學問與答3
21 問 在進行 windows 程式介面設計中,經常會用到按鈕,在 c builder 中,按鈕一定是通過按鈕元件來實現的嗎?答 是的,並且 c builder 的按鈕類元件十分豐富。bcb 提供了兩類按鈕類元件 一類是執行類按鈕,另一類是資訊類按鈕。所謂執行類按鈕是指它們通常用來啟動程式執行的,...