VC++中擷取字串的方法
阿新 • • 發佈:2019-02-01
在VC++程式設計中,我們有時會遇到關於擷取字串的問題,對於CString型別字串的擷取VC++中有現成的函式可供使用,主要是:CStringMid (int
nFirst, int nCount);和BOOL AfxExtractSubString (CString&rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep = 10);這兩個函式。
這兩個函式非常好用,而且值得一說的是,其中的AfxExtractSubString函式並未公開,在MSDN中也差不到相關的說明,但是在MSDN的例子裡卻常常出現,非常好用。下面先解釋一下這兩個函式:
⑴ CStringMid (int nFirst,int nCount);
函式功能:此函式從目標CString物件中提取一個長度為nCount個字元的子串並返回,從nFirst(從零開始的索引)指定的位置開始。
nFirst:開始位置(索引)。
nCount:提取長度。
⑵ BOOL AfxExtractSubString (CString&rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep = 10);
函式功能:此函式從目標字串lpszFullString中,根據分割標誌 chSep,取出第iSubString個子串,放入結果串rString中。
⑴ 目標字串:
m_str = "說 謊 鼻子 會 變 長";
⑵ 利用Mid函式計算目標串中關鍵詞的個數:
int tmplen=0; // 關鍵詞個數
for (int i=0;i<m_str.GetLength();i++)
{
if (m_str.Mid(i,1)==' ')
{
tmplen++;
}
}
⑶ 利用AfxExtractSubString函式擷取所有的關鍵詞:
CString* gjcArray=new CString [tmplen]; // 儲存所有關鍵詞的字串陣列 for (int i=0;i<tmplen;i++) { AfxExtractSubString(gjcArray[i], m_str, i, ' '); }