AnsiString和String的區別、使用


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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM