C Builder 初學問與答 十六

2021-09-21 12:26:36 字數 2857 閱讀 9894

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 提供了兩類按鈕類元件 一類是執行類按鈕,另一類是資訊類按鈕。所謂執行類按鈕是指它們通常用來啟動程式執行的,...