从头搜索字符串可以用pos方法。从尾呢?

hsn1982 2005-07-04 10:20:25
从字符串末尾开始搜索用什么方法
...全文
207 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
F117p 2005-07-04
  • 打赏
  • 举报
回复
原理也是将字符串反一下。
利用STL的:
reverse;

代码:
AnsiString str;
...
int L=str.Length();
char *tmp=new char[L];
strcpy(tmp,str.c_str());
using namespace std
reverse(tmp,tmp+L);//反转
str=tmp;
...
str.Pos(...
僵哥 2005-07-04
  • 打赏
  • 举报
回复
上面这个速度很慢,建议使用char数组+指针来操作,那样会快很多。
僵哥 2005-07-04
  • 打赏
  • 举报
回复
__int64 SwapPos(AnsiString strSource,AnsiString strFind)
{
__int64 pPos,pSLen,pFLen;

pPos=0;
pSLen=strSource.Length();
pFLen=strFind.Length();

if(pSLen==pFLen&&strSource==strFind)
return 1;

if(pSLen<pFLen)
return 0;

for(__int64 i=0;i<pSLen;i++)
{
AnsiString strTmp=strSource.SubString(pSLen-pFLen+1-i,pFLen);
if(strTmp==strFind)
{
pPos=pSLen-pFLen+1-i;
break;
}
}
return pPos;
}
僵哥 2005-07-04
  • 打赏
  • 举报
回复
{
__int64 pPos,pSLen,pFLen;

pPos=0;
pSLen=strSource.Length();
pFLen=strFind.Length();

if(pSLen==pFLen&&strSource==strFind)
return 1;

if(pSLen<pFLen)
return 0;

for(__int64 i=0;i<pSLen;i++)
{
AnsiString strTmp=strSource.SubString(pSLen-pFLen+1-i,pFLen);
if(strTmp==strFind)
{
pPos=pSLen-pFLen+1-i;
break;
}
}
return pPos;
}
F117p 2005-07-04
  • 打赏
  • 举报
回复
既然是只是单独的字符串,
理论上这点开销对于系统来说,无关痛痒
如果实在是很大的串,可以考虑将原串分割成N个小串,再进行操作。
Waiting4you 2005-07-04
  • 打赏
  • 举报
回复
没有,把两个字符串反过来再用Pos方法
僵哥 2005-07-04
  • 打赏
  • 举报
回复
如果要查找的源串相当大是,那么楼上的操作开销可不蛮小哦。

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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