就先介绍几个函数吧
关于截取字符串的两个函数CString::Tokenize()和AfxExtractSubString()
CString::Tokenize()和AfxExtractSubString()这两个函数都用来截取特定分隔符的字符串,其中有些区别值得注意。
CStringT Tokenize(PCXSTR pszTokens, int& iStart) const;
BOOL AFXAPI AfxExtractSubString(CString& rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep = '/n');
CString::Tokenize()中的PCXSTR pszTokens为分隔字符的组合,可为多个字符。int& iStart是开始位置,函数运行后会发生变化。
AfxExtractSubString()中的TCHAR chSep为分隔字符,只能是一个字符。
另外有一点要注意:
CString::Tokenize()碰到连续多个分隔字符是作为一个处理的,AfxExtractSubString()中多个分隔符可区分处理。
_tcstok函数的使用
可以编写一个小程序,在Debug状态下进行单步跟踪,查看其调用过程。
其实它们的功能都差不多 以下是我做的例子
CAtlString str(_T("Pos: 144.5s 2166f (57%) 55.77fps Trem: 0min 9mb A-V:0.000 [235:67]"));
CAtlString resToken;
int curPos = 0;
resToken= str.Tokenize(_T("()"),curPos);
while (resToken != _T(""))
{
resToken = str.Tokenize(_T("()"), curPos);
if(resToken.GetLength()<5&&resToken.GetLength()>1)MessageBox(resToken);
}
这段代码就是取这个字符串中的百分数