Cstring中的 Find()、Mid()、Replace() 用法
阿新 • • 發佈:2019-01-07
在一個較大的字串中查詢字元或子字串 ,返回此CString物件中與需要的子字串或字元匹配的第一個字元的從零開始的索引;如果沒有找到子字串或字元則返回-1。
- 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 字串中開始搜尋的字元的索引,如果是0,則是從頭開始搜尋。如果nStart不是0,則位於nStart之前的字元不包括在搜尋之內,但是會包括nStart處的字元。
- CString s( "abcdef" ); int n = s.Find( 'c' ); // 結果 n = 2 int f = s.Find( "de" ) ; // 結果 f = 3
- 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物件中提取的字元數。如果沒有提供這個引數,則字串的其餘部分都被提取。
- CString s( _T("abcdef") ); ASSERT( s.Mid( 2, 3 ) == _T("cde") );
- CString strBuff(buff); //將buff由char*型轉換為CString型.內容為0,0,1,1,4
- int pos1=0,pos2=0;
- pos2 = strBuff.Find(",",pos1);
-
if (pos2==-1)
- 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的長度不需要是相等的。兩種版本形式都進行區分大小寫的匹配。