Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1591413
  • 博文数量: 441
  • 博客积分: 20087
  • 博客等级: 上将
  • 技术积分: 3562
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-19 15:35
文章分类

全部博文(441)

文章存档

2014年(1)

2012年(1)

2011年(8)

2010年(16)

2009年(15)

2008年(152)

2007年(178)

2006年(70)

分类: C/C++

2007-08-08 10:52:44

在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;
}

阅读(1866) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~