c++ 函数 删除字符串指定位置的字符

 我来答
孤の漃113095a
2012-06-13 · TA获得超过135个赞
知道小有建树答主
回答量:305
采纳率:0%
帮助的人:154万
展开全部
有那么麻烦么 C++ 用string类 里面就有这个函数 我看了LS几个回答 还有用C写的 。。 还有 楼主。 稍微专业点的C++ 是include <iostream> 没有.h 之后使用using namespace std; 如果非要用char[](C风格字符串)的话 是需要像Java那样 把整个字符串舍弃 之后创建一个新的字符串的时候把指定位置的字符删掉。
咸乐心rl
推荐于2017-12-16 · TA获得超过385个赞
知道小有建树答主
回答量:301
采纳率:100%
帮助的人:164万
展开全部
#include<iostream>
using namespace std;

void str_dele(char str[],int m) //删除字符串str的第m个字符
{
int i,j=0,length=strlen(str);
char temp_str[100];
if(m>strlen(str))
cout<<"删除的位置不对!"<<endl;
else
{
for( i=0;i<strlen(str);i++)
if(i==m-1) continue;
else
temp_str[j++]=str[i];
}

for(i=0,j=0;j<length-1;)
str[j++]=temp_str[i++];

}

int main()
{
char str_0[]="abcdefghijik";

cout<<"原来的字符串为:"<<endl;
cout<<str_0<<endl;

str_dele(str_0,2); //函数调用
cout<<"删除指定位置字符后的字符串:"<<endl;
cout<<str_0<<endl;
system("pause");
return 0;
}
更多追问追答
追问
# include
# include
void delch(char *s,int n)
{
for(int i=n;*s!='\0';i++)
*(s+i)=*(s+i+1);
}
void main()
{
char str[15];
int m;
cin>>str;
cout>m;
delch(str,m);
cout<<str<<endl;
}错哪了??
追答
函数定义错了,for中的条件*s!='\0',在后面你使用的是s+i来依次取后面的值,而没有移动指针,指针一直都指向字符串的第一个字符。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宁静之声mm
2012-06-01
知道答主
回答量:36
采纳率:0%
帮助的人:16.8万
展开全部
int str_len(char *p)
{
int i = 0;
while(*p!='\0') {
i++;
p++;
}
return i;
}
void str_del(int loc,char *p)
{
int i;
for(i=loc-1;i<str_len(p);i++) {
*(p+i) = *(p+i+1); }
}
int main()
{
char a[] = "hello";
char *p = a;
int length;
int loc = 2;
length = str_len(p);
printf("%d\n",length);
str_del(loc,p); printf("%s",a);
}
追问
printf("%d\n",length);                                                                                                
str_del(loc,p); printf("%s",a); 。。。。
我、没学过????
还有:可以随便输入多少字符吗????
追答
printf("%d\n",length); //输出的是某字符串的长度。
str_del(loc,p);//就是你要求的删除某字符串指定位置的字符,这里loc就是位置,我现在设置的是2,你也可以改。我编的函数只是删除一个字符。
printf("%s",a); //这个是输出删除后的结果,来验证一下。

注:那个printf和cout作用一样,进行输出的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
慎重还可靠灬宝贝f
推荐于2016-04-02 · TA获得超过12.9万个赞
知道大有可为答主
回答量:1.9万
采纳率:52%
帮助的人:2611万
展开全部
C++中的string类中有erase成员函数,其功能是删除字符串中的字符或字符串。
该成员函数的原型为
string erase(int start, int len); //start为要删除字符的起始位置(从0数起),len为要删除字符的个数。
例如:
...
#include<string>
using namespace std;
...
string s1="asdfgh", s2;
s2=s1.erase(2,3); //删除s1中从第2个字符其的3个字符。

则s2的内容为"ash"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式