CString成員函數詳解[轉]


1、構造函數(常用)

      CString( const unsigned char* psz );
      例:char s[]="abcdef";
              char* sp=s;
              CString csStr(sp);
      //csStr="abcdef"

      CString( LPCSTR lpsz );
      例:CString csStr("abcdef");
      //csStr="abcdef"

     CString( LPCWSTR lpsz );
     例: CString csStr(L"abcdef");
     //csStr=L"abcdef"

     CString( LPCTSTR lpsz );
     例: CString csStr(_T("abcdef"));
     //csStr=_T("abcdef")

     CString( LPCTSTR lpch,  int nLength );
     例:CString csStr("abcdef", 3);
     //csStr="abc"

     CString( TCHAR ch,  int nRepeat = 1 );
     例:CString csStr(_T('a'), 5);
     //csStr="aaaaa"

2、int GetLength( ) const;
      unicode字符集下返回字符個數,ansi字符集下返回字符長度,不包含結尾的空字符。
      例:csStr="AB中文12";
      printf("%d",csStr.GetLength());       //UNICODE下為6,ANSI下為8

3、int Find( TCHAR ch ) const;
      int Find( LPCTSTR lpszSub ) const;
      int Find( TCHAR ch, int nStart ) const;
      int Find( LPCTSTR pstr, int nStart ) const;

      查找字串,nStart為開始查找的位置。未找到匹配時返回-1,否則返回字串的開始位置
      例:csStr="abcdef";
              cout<<csStr.Find('b');       //1
              cout<<csStr.Find("de");      //3
              cout<<csStr.Find('b',3);     //-1
              cout<<csStr.Find('b',0);     //1
              cout<<csStr.Find("de",4);    //-1
              cout<<csStr.Find("de",0);    //3
      //當nStart超出對象末尾時,返回-1。
      //當nStart為負數時,返回-1。

      int FindOneOf( LPCTSTR lpszCharSet ) const;
      查找lpszCharSet中任意一個字符在CString對象中的匹配位置。未找到時返回-1,否則返回字串的開始位置
      例:csStr="abcdef";
              cout<<csStr.FindOneOf("cxy");      //2

      int ReverseFind( TCHAR ch ) const;
      從后向前查找第一個匹配,找到時返回下標。沒找到時返回-1
      例:csStr="abba";
              cout<<csStr.ReverseFind('a');        //3

4、CString SpanExcluding( LPCTSTR lpszCharSet ) const;
      返回與lpszCharSet中任意字符匹配的字符之前的子串(找到第一個匹配的字符就返回)
      例:csStr="abcdef";
              cout<<csStr.SpanExcluding("cf");    //ab

      CString SpanIncluding( LPCTSTR lpszCharSet ) const;
      查找與lpszCharSe中任意字符不匹配的字符,並返回不匹配字符之前的字串(找到第一個不匹配的字符就返回)
      例:csStr="abcdef";
              cout<<csStr.SpanIncluding("fdcba");    //abcd

      可以利用SpanIncluding這個特性來判斷字符串的合法性,是否是我們要求的字符,比如是否全是數字構成的字符串:

      CString strTarget;
......
if ( strTarget == strTarget.SpanIncluding( _T("0123456789") ) ) 
{
// 字符串由數字構成,符合要求
......
}

5、TCHAR GetAt( int nIndex ) const;
      返回下標為nIndex的字符,與字符串的[]用法相同
      例:csStr="abcdef";
              cout<<csStr.GetAt(2);             //c
      //當nIndex為負數或超出對象末尾時,會發生無法預料的結果。

      void SetAt( int nIndex, TCHAR ch );
      給下標為nIndex的字符重新賦值
      例:csStr="abcdef";
              csStr.SetAt(2,'x');
              cout<<csStr;                      //abxdef
      //當nIndex為負數或超出對象末尾時,會發生無法預料的結果。

6、CString Left( int nCount ) const;
      從左取字串
      例:csStr="abcdef";
              cout<<csStr.Left(3);          //abc
      //當nCount等於0時,返回空。
      //當nCount為負數時,返回空。
      //當nCount大於對象長度時,返回值與對象相同。

      CString Right( int nCount ) const;
      從右取字串
      例:csStr="abcdef";
              cout<<csStr.Right(3);           //def
      //當nCount等於0時,返回空。
      //當nCount為負數時,返回空。
      //當nCount大於對象長度時,返回值與對象相同。

      CString Mid( int nFirst ) const;
      CString Mid( int nFirst, int nCount ) const;

      從中間開始取字串
      例:csStr="abcdef";
              cout<<csStr.Mid(2);           //cdef
              csStr="abcdef";
              cout<<csStr.Mid(2,3);         //cde
      //當nFirst為0和為負數時,從第一個字符開始取。
      //當nFirst等於對象末尾時,返回空字串。
      //當nFirst超出對象末尾時,會發生無法預料的結果。
      //當nCount超出對象末尾時,返回從nFirst開始一直到對象末尾的字串
      //當nCount為0和為負數時,返回空字串。

7、void Format( LPCTSTR lpszFormat, ... );
      void Format( UINT nFormatID, ... );

      格式化數據到CString對象,與C語言的sprintf函數用法類似
      例:csStr.Format("%d",13);
              cout<<csStr;                       //13

8、void Empty( );
      清空
      例:csStr="abcdef";
              csStr.Empty();
              printf("%d",csStr.GetLength());    //0

      BOOL IsEmpty( ) const;
      測試對象是否為空,為空時返回零,不為空時返回非零
      例:csStr="abc";
              cout<<csStr.IsEmpty();         //0;
              csStr.Empty();
              cout<<csStr.IsEmpty();         //1;

9、void MakeReverse( );
      顛倒字符串的順序
      例:csStr="ABCDEF中文123456";
              csStr.MakeReverse();
              cout<<csStr;                  //654321文中FEDCBA

      void MakeUpper( );
      將小寫字母轉換為大寫字母
      例:csStr="abcdef中文123456";
              csStr.MakeUpper();
              cout<<csStr;                  //ABCDEF中文123456

      void MakeLower( );
      將大寫字母轉換為小寫字母
      例:csStr="ABCDEF中文123456";
              csStr.MakeLower();
              cout<<csStr;                  //abcdef中文123456

10、int Compare( LPCTSTR lpsz ) const;
        區分大小寫比較兩個字符串,相等時返回0,大於時返回1,小於時返回-1
        例:csStr="abcdef中文123456";
                csStr2="ABCDEF中文123456";
                cout<<csStr.CompareNoCase(csStr2);             //0

        int CompareNoCase( LPCTSTR lpsz ) const;
        不區分大小寫比較兩個字符串,相等時返回0,大於時返回1,小於時返回-1
        例:csStr="abcdef中文123456";
        csStr2="ABCDEF中文123456";
        cout<<csStr.CompareNoCase(csStr2);             //-1

        CString對象的比較還可以通過==、!=、<;、>;、<=、>=等重載運算符實現。

11、int Delete( int nIndex, int nCount = 1 )
        刪除字符,刪除從下標nIndex開始的nCount個字符
        例:csStr="ABCDEF";
                csStr.Delete(2,3);
                cout<<csStr;              // ABF
        //當nIndex過大,超出對像所在內存區域時,函數沒有任何操作。
        //當nIndex為負數時,從第一個字符開始刪除。
        //當nCount過大,導致刪除字符超出對像所在內存區域時,會發生無法預料的結果。
        //當nCount為負數時,函數沒有任何操作。

        int Insert( int nIndex, TCHAR ch )
        int Insert( int nIndex, LPCTSTR pstr )

        在下標為nIndex的位置,插入字符或字符串。返回插入后對象的長度
        例:csStr="abc";
                csStr.Insert(2,'x');
                cout<<csStr;                    //abxc
                csStr="abc";
                csStr.Insert(2,"xyz");
                cout<<csStr;                    //abxyzc
       //當nIndex為負數時,插入在對象開頭
       //當nIndex超出對象末尾時,插入在對象末尾

       int Remove( TCHAR ch );
       移除對象內的指定字符。返回移除的數目
       例:csStr="aabbaacc";
               csStr.Remove('a');                cout<<csStr;                    //bbcc

        int Replace( TCHAR chOld, TCHAR chNew );
        int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );

        替換字串
        例:csStr="abcdef";
                csStr.Replace('a','x');
                cout<<csStr;                    //xbcdef
                csStr="abcdef";
                csStr.Replace("abc","xyz");
                cout<<csStr;                    //xyzdef

  12、void TrimLeft( );
          void TrimLeft( TCHAR chTarget );
          void TrimLeft( LPCTSTR lpszTargets );

          從左刪除字符,被刪的字符與chTarget或lpszTargets中字符匹配,一直刪到第一個不匹配的字符為止
          例:csStr="aaabaacdef";
                  csStr.TrimLeft('a');
                  cout<<csStr;                //baacdef
                  csStr="aaabaacdef";
                  csStr.TrimLeft("ab");
                  cout<<csStr;                //cdef
         //無參數時刪除換行、空格、制表符。

         void TrimRight( );
         void TrimRight( TCHAR chTarget );
         void TrimRight( LPCTSTR lpszTargets );

         從右刪除字符,被刪的字符與chTarget或lpszTargets中字符匹配,一直刪到第一個不匹配的字符為止
         例:csStr="abcdeaafaaa";
         csStr.TrimRight('a');
         cout<<csStr;               //abcdeaaf
         csStr="abcdeaafaaa";
         csStr.TrimRight("fa");
         cout<<csStr;                //abcde
        //無參數時刪除換行、空格、制表符。

        void Trim( );
        void Trim( TCHAR chTarget );
        void Trim( LPCTSTR lpszTargets );

        從左和右刪除字符,被刪的字符與chTarget或lpszTargets中字符匹配,一直刪到第一個不匹配的字符為止
        //無參數時刪除換行、空格、制表符。

13、LPTSTR GetBuffer( int nMinBufLength );
        獲取內部字符緩沖區.返回LPTSTR類型指針。參數nMinBufLength指定緩沖區大小,參數為空則為原內部緩沖區大小。
        例:CString str;
               LPTSTR p = str.GetBuffer(100);
               _tcscpy(p, L"abc");
               str.ReleaseBuffer();
               int nLength = str.GetLength();//3
               cout << str;//"abc"
        //使用完GetBuffer后必須使用ReleaseBuffer以更新對象內部數據,CString對象的任 何方法都應在ReleaseBuffer之后調用。與GetBufferSetLength不同的是如果分配的空間大於實際保存的字符串('\0'結尾), ReleaseBuffer會把多余申請的空間釋放。
       void ReleaseBuffer( int nNewLength = -1 );
       使用GetBuffer后必須使用ReleaseBuffer以更新對象內部數據,CString對象的任 何方法都應在ReleaseBuffer之后調用
       LPTSTR GetBufferSetLength( int nNewLength );
         獲取內部字符緩沖區.返回LPTSTR類型指針。

    例: CString str;
           LPTSTR p = str.GetBufferSetLength(100);
           _tcscpy(p, L"abc");
           str.ReleaseBuffer();
           int nLength = str.GetLength();//3
           cout << str;//"abc"

    //使用完GetBuffer后不必再調用ReleaseBuffer

CStringArray類

CStringArray類支持CString對象數組,其類似於CObArray類,你可以參考關於CObArray的參考文件來獲取CStringArray成員函數的詳細說明。如果在說明中看到某一函數的返回值是一個指向CObject對象的指針,則可以用一個CString來代替它。


免責聲明!

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



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