c++ 如何把字符串清空

char a[80];
........
中间给a付了值
怎么再把a给清空呢
strcpy(a,"");这样可以吗

方法一:

#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:双精度浮点型数据,属于浮点数据的一种。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-23
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而止的,所以,用户看不到后面位置上的垃圾数据。
第2个回答  推荐于2017-09-26
可以用系统函数
memset(a,0,sizeof(a));
头文件
#include<MEM.H>
strcpy(a," ");这样可以的,也可以将它置空本回答被提问者采纳
第3个回答  2011-03-24
建议你用指针定义,并进行动态分配
例如:
char *a=new char(80);
然后
delete [ ]a;
释放空间,就行;
至于字符串清空,建议你用 a={ };
第4个回答  2011-03-24
只要这一句就够了:
a[0]=0;

补充:
听哥的,错不了。你去搜索下C字符串的原理就知道了。
相似回答