设为首页 加入收藏

TOP

C++字符串高效查找替换
2013-05-03 18:18:37 来源: 作者: 【 】 浏览:61
Tags:字符串 高效 查找 替换

    在最近的一个项目中,需要实现几万字符的查找替换,我使用CString的Replace花了两个小时,才完成替换。使用stl的string,花了大概6分钟。

    万般无赖,使用char*,自己实现查找替换吧,在1秒以内完成了替换。参考了网上的代码。

    直接上代码吧。

    void CWebTransfer::Substitute(char *pInput, char *pOutput, char *pSrc, char *pDst)

    {

    char *pi, *po, *p;

    int nSrcLen, nDstLen, nLen;

    // 指向输入字符串的游动指针。

    pi = pInput;

    // 指向输出字符串的游动指针。

    po = pOutput;

    // 计算被替换串和替换串的长度。

    nSrcLen = strlen(pSrc);

    nDstLen = strlen(pDst);

    // 查找pi指向字符串中第一次出现替换串的位置,并返回指针(找不到则返回null)。

    p = strstr(pi, pSrc);

    if(p)

    {

    // 找到。

    while(p)

    {

    // 计算被替换串前边字符串的长度。

    nLen = (int)(p - pi);

    // 复制到输出字符串。

    memcpy(po, pi, nLen);

    memcpy(po + nLen, pDst, nDstLen);

    // 跳过被替换串。

    ppi = p + nSrcLen;

    // 调整指向输出串的指针位置。

    popo = po + nLen + nDstLen;

    // 继续查找。

    p = strstr(pi, pSrc);

    }

    // 复制剩余字符串。

    strcpy(po, pi);

    }

    else

    {

    // 没有找到则原样复制。

    strcpy(po, pi);

    }

    }

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇VC改变DialogBar的背景色 下一篇disksim使用总结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: