在VC7中有这样一个函数,CString Tokenize(CString strSep, int& nPos);
它的作用是返回源字符串中,从nPos位置开始到第一个字符串strSep结束的子字符串。
例如:
CString str = "abc#efg#hij";
int nPos = 0;
CString strOut = str.Tokenize(_T("#", nPos);
此时strOut输出abc, 同时, nPos = 4
在VC6中是没有这个函数的, 我根据VC7中描述的意思,写了一个:
/*
该函数返回源字符串中从nPos的位置开始,一直到strSeparator结束的字符串,
如果,没有找到strSeparator则,返回空字符串
*/
CString Tokenize(CString strSrc, CString strSeparator, int& nPos)
{
CString strDest("");
int nFind = strSrc.Find(strSeparator, nPos);
if ( nFind < 0 )
return strDest;
int nLen = nFind - nPos;
TCHAR *pStr = (TCHAR*)malloc(nLen+1);
int i, j = 0;
for ( i = nPos; i < nFind; i++ )
pStr[j++] = strSrc[i];
pStr[j] = 0;
strDest = pStr;
delete pStr;
nPos = nFind + strSeparator.GetLength();
return strDest;
}
阅读(1917) | 评论(0) | 转发(0) |