还是字符串处理效率问题

ldq 2011-07-01 05:12:56
CString DelSeparator(CString inStr, CString spstr, int icut)
{
CString tmpstr="";
CString retStr, backStr;
int i;
spstr.MakeUpper();
if (spstr !="")
{
if (spstr=="SP")
{
spstr = " ";
}

do
{
i = inStr.Find(spstr);
if (i<0)
{
break;
}
tmpstr = tmpstr + inStr.Left(i);
inStr = inStr.Mid(i+1,inStr.GetLength()-i);
} while(1);

retStr = tmpstr + inStr;
backStr = retStr.Left(retStr.GetLength()-icut);
}
else
{
backStr = inStr.Left(inStr.GetLength()-icut);
}
return backStr;

}

CString 效率好像真不怎样,新学C++ 不知该怎么个改法 这个函数就是传入一段字符串 然后去掉传入字符串中指定的一个字符
...全文
95 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
woncomp 2011-07-01
  • 打赏
  • 举报
回复
养成良好的习惯
对于字符串尽量使用 char*

你会发现在传参数的时候还有各项操作的时候都简单很多,也高效很多
副组长 2011-07-01
  • 打赏
  • 举报
回复
试试这段代码,只能单字节的串。破坏原串。
你那个CString反复从头找估计是慢了。

void DelSeparator(char* inStr, char* spstr)
{
char* pStr;
char* tmpstr = inStr;
int dl = strlen(spstr);
int i,sl;
do
{
sl = strlen(tmpstr);
pStr = strstr(tmpstr,spstr);
if( NULL == pStr)
{
break;
}
sl -= (pStr-tmpstr);
tmpstr = pStr;
for(i=0; i<sl-dl; i++)
{
*(tmpstr+i) = *(pStr+dl+i);
}
*(tmpstr+i) = 0;
}while(1);
}
int _tmain(int argc, _TCHAR* argv[])
{
char str[] = "123456788901234567887340";
DelSeparator(str,"788");

return 0;
}
ldq 2011-07-01
  • 打赏
  • 举报
回复
哎 自已改了下
CString DelSeparator(CString inStr, CString spstr, int icut)
{
CString tmpstr="";
CString retStr, backStr;
int i;
spstr.MakeUpper();
if (spstr !="")
{
if (spstr=="SP")
{
spstr = " ";
}

do
{
i = inStr.Find(spstr);
if (i<0)
{
break;
}
//tmpstr = tmpstr + inStr.Left(i);
//inStr = inStr.Mid(i+1,inStr.GetLength()-i);
inStr.Replace(spstr,"");
} while(1);
retStr = inStr;
//retStr = tmpstr + inStr;
backStr = retStr.Left(retStr.GetLength()-icut);
}
else
{
backStr = inStr.Left(inStr.GetLength()-icut);
}
return backStr;

}

现在好多了 怎么就没人提醒下我呢 求改进
ldq 2011-07-01
  • 打赏
  • 举报
回复
新手 还真不会转换 我全是用CString 写的 现在遇到了字符串长度为9000+的 转换的还真慢
smwhotjay 2011-07-01
  • 打赏
  • 举报
回复
s874664 2011-07-01
  • 打赏
  • 举报
回复
物是人非 这种感觉你体会过吗
用户 昵称 2011-07-01
  • 打赏
  • 举报
回复
就TCHAR * + memcmp之类的就能实现。
ryfdizuo 2011-07-01
  • 打赏
  • 举报
回复
求效率就直接用char*写。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧