纯SDK写的字符串替换函数

原创 2006年05月17日 09:56:00

工作中因为需要用到这样的函数,想偷懒,在网上找,没有找到,便自己写了一个.

//lpSrc----[in,out]dest string,after replacing string,it will contain result string

//lpOldStr----string which will be replaced

//lpNewStr---- new string for replacing

void ReplaceString(LPTSTR& lpSrc, LPTSTR lpOldStr, LPTSTR lpNewStr)
{
 if(!lpSrc || !lpOldStr || !lpNewStr)
  return;
 
 int nOldLen =  strlen(lpOldStr);
 int nNewLen =  strlen(lpNewStr);
 
 int nCount = 0;
 LPTSTR lpszStart = lpSrc;
 LPTSTR lpszEnd  = lpSrc + strlen(lpSrc);
 LPTSTR lpszTarget;
 LPTSTR lpTempSrc;
 
 while(lpszStart < lpszEnd)
 {
  while((lpszTarget = strstr(lpszStart, lpOldStr)) != NULL)
  {
   nCount++;
   lpszStart = lpszTarget + nOldLen;
  }
  lpszStart += strlen(lpszStart) + 1;
 }
 
 if(nCount > 0)
 {
  int nOldSrcLen = strlen(lpSrc) + 1;
  int nNewSrcLen = nOldSrcLen + (nNewLen-nOldLen)*nCount;
  
  if(nNewSrcLen > nOldSrcLen)
  {
   lpTempSrc = new TCHAR[nOldSrcLen];
   if(lpTempSrc)
   {
    memset(lpTempSrc, 0, nOldSrcLen);
    memcpy(lpTempSrc, lpSrc, nOldSrcLen);
    delete []lpSrc;
    lpSrc = new TCHAR[nNewSrcLen];
    if(lpSrc)
    {
     memset(lpSrc, 0 , nNewSrcLen);
     memcpy(lpSrc, lpTempSrc, nOldSrcLen);
    }
    delete []lpTempSrc;
    lpTempSrc = NULL;
   }
  }
  lpszStart = lpSrc;
  lpszEnd = lpSrc + strlen(lpSrc);
  while(lpszStart < lpszEnd)
  {
   while((lpszTarget = strstr(lpszStart, lpOldStr)) != NULL)
   {
    int nBalance = nOldSrcLen - (lpszTarget - lpSrc + nOldLen);
    memmove(lpszTarget + nNewLen, lpszTarget + nOldLen, nBalance * sizeof(TCHAR));
    memcpy(lpszTarget, lpNewStr, nNewLen * sizeof(TCHAR));
    lpszStart = lpszTarget + nNewLen;
    nOldSrcLen += (nNewLen - nOldLen);
   }
   lpszStart += strlen(lpszStart) + 1;
  }
 }
}

用sdk写了一个简单界面

 sdk简单界面第一版sdk简单界面第三版,代码只有1000多行,98可以运行
  • yacsha
  • yacsha
  • 2007年06月24日 14:34
  • 1165

C语言实现字符串替换函数

#include #include #include #include //字符串替换函数 /*************************************************...
  • earbao
  • earbao
  • 2014年03月01日 17:51
  • 23129

JavaScript-可维护代码编写,函数式编程与纯函数

JavaScript-可维护代码编写,函数式编程与纯函数JavaScript是函数式编程与面向对象编程的混合编程语言,加上本身一些可扩展性(比如:函数参数个数及类型的不确定),使得JavaScript...
  • qiqingjin
  • qiqingjin
  • 2016年05月26日 21:02
  • 1337

[原]C语言字符串替换函数(strrpl)

// 参数说明: // in, 源字符串 // out, 存放最后结果的字符串 // outlen,out最大的大小 // src,要替换的字符串 // dst,替换成什么字符串 char *strr...
  • sunnysab
  • sunnysab
  • 2014年04月23日 17:55
  • 24693

C/C++ 字符串replace替换函数

基于char*  char*replace(char*src, char*sub, char*dst){ int pos =0; int offset =0; int srcLen...
  • ybhjx
  • ybhjx
  • 2016年03月31日 09:09
  • 5550

什么叫pure function(纯函数)

在Knockout中,用到了pureComputer(),其原理来自于纯函数(pure function)。那么,什么叫纯函数呢? 纯函数 (来自:http://en.wikipedia.org/...
  • hongweigg
  • hongweigg
  • 2015年03月03日 10:55
  • 10066

js的字符串替换函数replace

最近用js写了一个模板替换的函数,传入一个对象和一个模板字符串,将模板中对应的变量替换成对应的值,这个功能很简单,遍历一下对象,然后使用js自带的replace函数进行替换,写好后,一开始觉得挺好用的...
  • u013160932
  • u013160932
  • 2015年10月21日 21:35
  • 2459

总结 React 组件的三种写法 及最佳实践 [涨经验]

React 专注于 view 层,组件化则是 React 的基础,也是其核心理念之一,一个完整的应用将由一个个独立的组件拼装而成。 http://www.mrfront.com/2017/01/11...
  • sinat_17775997
  • sinat_17775997
  • 2017年02月28日 23:14
  • 542

JS字符串替换函数全部替换方法

JS字符串替换函数全部替换方法  正则表达式浏览器HTML  JS字符串替换函数:Replace(“字符串1″, “字符串2″),  1.我们都知道JS中字符串替换函数是Replac...
  • Bruce__taotao
  • Bruce__taotao
  • 2016年04月09日 10:30
  • 1964

PHP中字符串替换函数之strtr详解

官方给出解释如下 语法 strtr(string,from,to) 或者: strtr(string,array) 参数 描述 string ...
  • hsd2012
  • hsd2012
  • 2016年03月01日 11:36
  • 445
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:纯SDK写的字符串替换函数
举报原因:
原因补充:

(最多只允许输入30个字)