如何在c++的字符串中删除某个字符串

 我来答
pardream941026
推荐于2017-11-22 · TA获得超过8217个赞
知道大有可为答主
回答量:4602
采纳率:89%
帮助的人:1336万
展开全部
利用C的strstr函数查找字符串,然后strcpy拷贝覆盖它。

#include <cstring>

int main() {
    char s1[] = "This string is used for testing strstr() function";
    char s2[] = "used for";
    char *s3;
    s3 = strstr(s1, s2);
    int p1 = s3-s1; //这只是参考代码,实际本例中,计算p1是无用的。
    strcpy(s1+p1, s3+strlen(s2)); //这里s1+p1,不就是s3的位置?
                                  //但这里还是有问题的,没判断s3是否找到。
                                  //如果s3=NULL,就不应该执行本句了。
    cout << s1 << endl;
   return 0;
}
//这里只删除了一处匹配的字符串,如果有多处匹配,则循环处理。
匿名用户
2016-08-30
展开全部
#include<iostream>
void Delete(char ch[],int n)
{
int len = strlen(ch);//得到字符串的长度(自带函数在#include<string.h>中)
for(int i=0;i<len;i++)
if(i>=n)
ch[i-1]=ch[i];//把n-1后的前面字符全部替换为为后面的字符
char *str = ch;//用str拷贝ch
str[len-1] = '\0';//把最后一位变为字符串结束标志,因此导致内存泄漏,因为后面还有一个'/0'
ch = new char[len-1];//新开辟一块空间
for(int i;i<=len-1;i++)//把str"/0/0"第二个/0之前的字符全部拷贝到ch中
ch[i] = str[i];
delete []str;//把之前的空间释放
}
int main()
{
char ch[]="helloworld";
Delete(ch,5);
std::cout<<ch;//输出hellworld
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cayido001
2016-08-30 · TA获得超过172个赞
知道小有建树答主
回答量:210
采纳率:100%
帮助的人:225万
展开全部
有没有具体的例子,问题太含糊了。 能否打个比方
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式