如何在c++的字符串中删除某个字符串
3个回答
展开全部
利用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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有没有具体的例子,问题太含糊了。 能否打个比方
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询