1. 程式人生 > >Cstring中的 Find()、Mid()、Replace() 用法

Cstring中的 Find()、Mid()、Replace() 用法

在一個較大的字串中查詢字元或子字串 ,返回此CString物件中與需要的子字串或字元匹配的第一個字元的從零開始的索引;如果沒有找到子字串或字元則返回-1。

  1. int Find( TCHAR ch ) const;     
  1. int Find( LPCTSTR lpszSub ) const;     
  1. int Find( TCHAR ch, int nStart ) const;     
  1. int Find( LPCTSTR pstr, int nStart ) const;  

其中,nStart 字串中開始搜尋的字元的索引,如果是0,則是從頭開始搜尋。如果nStart不是0,則位於nStart之前的字元不包括在搜尋之內,但是會包括nStart處的字元。

 

  1. CString s( "abcdef" );   int n = s.Find( 'c' ); // 結果 n = 2   int f = s.Find( "de" ) ; // 結果 f = 3 

  1. CString str("The stars are aligned");   int n = str.Find('e',2); //結果 n = 2

 CString Mid( int nFirst, int nCount ) const;

此成員函式從此CString物件中提取一個長度為nCount個字元的子串,從nFirst(從零開始的索引)指定的位置開始。此函式返回一個對所提取的字串的拷貝,可能是空的。

     nFirst 此CString物件中的要被提取的子串的第一個字元的從零開始的索引。

 nCount 要從此CString物件中提取的字元數。如果沒有提供這個引數,則字串的其餘部分都被提取。

  1. CString s( _T("abcdef") );   ASSERT( s.Mid( 2, 3 ) == _T("cde") );   
  1. CString strBuff(buff);    //將buff由char*型轉換為CString型.內容為0,0,1,1,4
  2. int pos1=0,pos2=0;  
  3. pos2 = strBuff.Find(",",pos1);  
  4. if (pos2==-1) 
    return FAULSE;  
  5. m_screenmode.screen_info[j].x = atoi(strBuff.Mid(pos1,pos2-pos1));  

上面的程式碼通過Find()和Mid()來獲取逗號之間的內容,依次類推,不斷變化pos1和pos2的值,就可以將每個逗號間的值全都取出來。

3、CString::Replace

  int Replace( TCHAR chOld, TCHAR chNew );

  int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );

在替換之後,該字串有可能增長或縮短;那是因為lpszNew和lpszOld的長度不需要是相等的。兩種版本形式都進行區分大小寫的匹配。