? 在VC++編程中,我們有時會遇到關于截取字符串的問題,對于CString類型字符串的截取VC++中有現成的函數可供使用,主要是:CString**Mid**(int*nFirst***,**int *nCount*);和BOOL?**AfxExtractSubString**(CString&rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep = 10);這兩個函數。
? 這兩個函數非常好用,而且值得一說的是,其中的**AfxExtractSubString**函數并未公開,在MSDN中也差不到相關的說明,但是在MSDN的例子里卻常常出現,非常好用。下面先解釋一下這兩個函數:
? ⑴??CString**Mid**(int*nFirst***,**int *nCount*);
? 函數功能:此函數從目標CString對象中提取一個長度為nCount個字符的子串并返回,從nFirst(從零開始的索引)指定的位置開始。
? nFirst:開始位置(索引)。
? nCount:提取長度。
? ⑵??BOOL**AfxExtractSubString**(CString&rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep = 10);
? 函數功能:此函數從目標字符串lpszFullString中,根據分割標志chSep,取出第iSubString個子串,放入結果串rString中。
? 下面將結合一個從目標字符串中以**空格**為分割標志截取所有關鍵詞的實例,來詳細說明(完整的實例程序可在我的CSDN資源中下載:[http://download.csdn.net/detail/margin1988/5415583](http://download.csdn.net/detail/margin1988/5415583)):
? ⑴??目標字符串:
~~~
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, ' ');
}
~~~
- 前言
- VC++中自定義熱鍵及響應
- CFileDialog文件對話框
- VC++中客戶區保存為BMP圖片
- VC++讀、寫注冊表
- VC++播放音頻文件和音頻數據的方法
- VC++調用Matlab編寫的DLL(混合編程)
- VC++中文件讀、寫和其他相關操作匯總
- VC++獲取系統當前時間
- VC++按鈕控件字體設置
- VC++軟件界面風格簡單美化
- VC++中一些常用的數據類型之間的相互轉化
- VC++中截取字符串的方法
- VC++中vector矢量的使用方法及隨機相關
- VC++中結構體的定義及使用
- VC++中List Control控件的使用方法介紹
- VC++中窗口過程函數及其消息發送、響應機制介紹
- VC++中Ribbon編程架構及SDI架構多視圖切換介紹
- 串口通信基礎知識及VC++實現
- VC++中單個鍵盤按鍵的響應
- VC++中的計時器及多媒體高精度計時器
- VC++編寫DLL導出函數及其調用方法
- VC++對話框(CDialog)的全屏顯示及控件居中顯示
- VC++對話框(CDialog)添加背景圖片
- VC++圖片控件(Picture Control)顯示資源位圖(BMP)、文件位圖(BMP)、其它格式文件圖片(JPG\PNG\BMP)的方法
- VC++對Access數據庫的操作(查詢、插入、更新、刪除等)