c++ 如何把字符串清空

chara[80];........中间给a付了值怎么再把a给清空呢strcpy(a,"");这样可以吗... char a[80];
........
中间给a付了值
怎么再把a给清空呢
strcpy(a,"");这样可以吗
展开
 我来答
问明6E
高粉答主

2019-07-04 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:13万
展开全部

方法一:

#include<iostream>

#include <string>

using namespace std;

void deletestr(const char *str, const char* sub_str, char *result);

int main()

char str[100],sub[100];

cin>>str;

cin>>sub;

char result;

deletestr(str,sub,&result);

return 0;

}

void deletestr(const char *str, const char* sub_str, char *result)

{  

int sublen = 0; //获得子串的长度

const char *t = sub_str;

while(*t++ != '\0')

{

sublen++;

}

int pos = 0;

int pp = 0;

int repos = 0; // 结果子串的索引

while(*(str + pos) != '\0')

{

char t = *(str + pos);

if(t == *(sub_str + pp)) // 重复子串起始位置

{

*(result + repos) = t;

repos++;

if(pp < sublen - 1) // 还未完全重复

{

pp++;

}

else if(pp == sublen - 1) // 完全重复了

{

pp = 0;

repos -= sublen; // 回溯下标位置

}           

}

else{ // 不是一样的字符

*(result + repos) = t;

repos++;

}

pos++;

}

*(result + repos) = '\0';

cout<<result<<endl;

}

方法二:用STL 

#include<iostream>

#include <string>

using namespace std;

void deletesub(string &str,const string &sub,int n);

int main()

string str,sub;

cin>>str;

cin>>sub;

int n=sub.size();

deletesub(str,sub,n);

return 0;

}

void deletesub(string &str,const string &sub,int n)

{

int m,flag=0,num=0;//num是子串出现的次数

while(flag==0)

{

m=str.find(sub);

if(m<0)

flag=1;

else

{

str.erase(m,n);//删除子串

num++;

}

}

// cout<<num<<endl; //子串出现的次数

cout<<str<<endl;// 输出删除后的字符串  

}

扩展资料

chara使用方法:

C语言中char用于定义字符类型变量或字符指针变量,例如“chara;”则定义了变量a是字符类型,“char*a;”则定义了变量a是字符指针类型。

char是C语言整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认是signed,但char在标准中不指定为signed/unsigned,编译器可以实现为带符号的,也可以实现为不带符号的。

关于char还有一个特殊的语言就是char*,它在C语言中有专门的语义,既不同于signedchar*,也不同于unsignedchar*,专门用于指以'\0'为结束的字符串。

C语言所有基本数据类型

void:声明函数无返回值或无参数,声明无类型指针,显示丢弃运算结果。

char:字符型类型数据,属于整型数据的一种。

int:整型数据,表示范围通常为编译器指定的内存字节长。

float:单精度浮点型数据,属于浮点数据的一种。

double:双精度浮点型数据,属于浮点数据的一种。

kaixingui2012
推荐于2017-09-23 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6475万
展开全部
c++ 数组清空的方法为:
char a[80];
1、memset() 给指定内存置相应的值
#include <string.h> //引用相关头文件
memset( a, 0, sizeof(a) ); //把从a开始的80个字符全置为0
2、循环遍历数组,逐位清0
for( int i=0;i<sizeof(a);i++ )
a[i]=0; //该循环达到memset()函数的效果。
3、所谓的字符串清空:
strcpy(a, ""); 本句相当于 a[0]=0 ;
这里只是完成了数组a的首地址置0,0是字符串结束符'\0'的ascii值,这样赋值后,只是表示一个空字符串,而剩余的数组位置上的数据还是原来存储的内容不会有变化的。所有的字符串操作函数,都会遇0而止的,所以,用户看不到后面位置上的垃圾数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zheng_zhiwen12
推荐于2017-09-26 · TA获得超过543个赞
知道小有建树答主
回答量:265
采纳率:100%
帮助的人:105万
展开全部
可以用系统函数
memset(a,0,sizeof(a));
头文件
#include<MEM.H>
strcpy(a," ");这样可以的,也可以将它置空
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rgwangpeng
2011-03-24
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
建议你用指针定义,并进行动态分配
例如:
char *a=new char(80);
然后
delete [ ]a;
释放空间,就行;
至于字符串清空,建议你用 a={ };
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
starfar1983
2011-03-24 · TA获得超过2258个赞
知道小有建树答主
回答量:692
采纳率:0%
帮助的人:1041万
展开全部
只要这一句就够了:
a[0]=0;

补充:
听哥的,错不了。你去搜索下C字符串的原理就知道了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式