close

      AnsiString類是BCB中最常見類之一,了解它對以後深入學習BCB大有幫助原來關於這個類的提出的問題有很多,現總結如下。加上我個人的經驗,湊出了一篇關於這個類的最常用方法屬性的介紹,希望能對各位有所幫助

常用方法:
  1. char* c_str()
  返回一個字符串指針,他指向的內容和AnsiString中包含的字符串的內容一致(BCB幫助中就是是這樣解釋這個方法的,關於它更詳細的討論見後文)
  Example:
  AnsiString str = "Hello World!";
  MessageBox(NULL,str.c_str(),"",MB_OK);   //顯示一個消息框

  2.AnsiCompare(AnsiString& rhs)
    operator == (AnsiString& rhs)
  都用來比較兩個AnsiString的內容是否相同,兩者的區別在於當內容相等的時候前者返回0,而後者返回true

  3.int Length()
  很簡單,返回字符串長度

  4.char & operator [](const int idx)
   返回字符串中第idx個字符
  注意:這個地方不知道BCB怎麼想的,可能是為了照顧Delphi程序員的習慣吧卻給C程序員造成了一點小小的麻煩:和C中數組的用法不兼容,也就是說當idx為0的時候,BCB會拋出一個異常,而不是返回第一個字符!要得到第一個字符,idx應該為1
  Example:
  AnsiString str = "Hello World!";
  char byte = str[2];
  //byte等於'e' 而 不等於'l'
  ps.下面的介紹,只要是關於第X個字符的,都和這裡一樣,不再重複
   
  5.AnsiString SubString(int index, int count)
  返回從第index個字符開始,長度為count子串
  Example:
  AnsiString str = "Hello World!";
  MessageBox(NULL,str.SubString(7,5).c_str(),"",MB_OK);  //顯示內容為 World

  6.int pos(AnsiString& subStr)
  查找內容為subStr的字串,如果有,返回字串的第一個字符位置 如果沒有,返回0

  7.int ToInt()
    int ToIntDef(int defaultValue)
  返回當前字符串轉化為整數的結果,不同點在於,當不能轉化時,前者拋出一個異常,而後者返回defaultValue,嘿嘿,偶喜歡後者

  8.AnsiString LowerCase()
    AnsiString UpperCase()
  返回當前字符串轉化為小寫/大寫的結果
  注意,它們只是返回一個新的AnsiString,原來字符串的內容沒有變化

  9.AnsiString& sprintf(char *, ...)
  利用sprintf強大功能格式化當前字符串,詳細用法請參考sprintf或者printf

  其它一些操作符:+  +=  >=  >  <  <=  !=
  這些不用解釋了吧……


深入探討:

  1.關於c_str()的返回值問題.
  能否用這個返回值訪問/修改字符串中的內容?
  Example:
  AnsiString a = "I want to modify this using pointer";
  char *p = a.c_str();
  p[0] = 'i';
  ........           //指針操作
  ShowMessage(a);
  雖然BCB的幫助表明 c_str()這個函數的返回值(char*)只在它所在表達式內有效,
  但是以上代碼有時候卻可以完成預期的目的
  個人極力反對用這種方法來改變字符串的內容,因為AnsiString自帶的方法已經能夠十
分有效的完成指針操作
  比如上面的例子中 p[0] 可以用 a[1] 來代替
  合併字符串可以用 + 或者 += 來替代
  還有查找,插入,刪除等,都可以在幫助中找到AnsiString類中對應的方法來實現

  2.Unicode的支持
  由於AnsiString非模板類
  除了WideChar方法外,AnsiString好像不支持Unicode
  但是不知道為什麼裡面會有ByteType這個方法

  3.很有意思的方法
  Unique()
  LastDelimiter()
  不常用,但是我覺得是十分有意思的函數
  怎麼用,可以參考幫助

 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?postId=32937

arrow
arrow
    文章標籤
    pos pos機 收銀機
    全站熱搜
    創作者介紹
    創作者 samantishaju 的頭像
    samantishaju

    samantishaju的部落格

    samantishaju 發表在 痞客邦 留言(0) 人氣()