C++ Builder 初學問答(十六)

來源:互聯網
上載者:User

 

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表示Null 字元串
 
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;

  (未完待續)

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.