把string转换为char* 的三种方式:
1.data()函数
exp:
string str=“abc”;
char* p=str.data();
2.c_str()
exp:
string str=“gdfd”;
const char* p=str.c_str();
3.copy
exp:
string str=“hello”;
char p[40];
str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置
(p+5)=‘\0’; //要手动加上结束符
cout <<p;
size()/sizeof()/strlen()/length()/应用总结:
1、sizeof() 可以以类型、指针、数组和函数等作为参数,其值在编译时计算,用于获取操作数所占空间的字节数大小。
2、strlen()函数其参数只能为char(字符型指针)*,所以在计算字符数组(char str[ ])时,一般用strlen()函数(也只能用于计算字符数组了)。此函数是c中的函数,使用必须include<string.h>, 不能是include,前者是c的函数,后者是c++的标准库函数
3、size()函数以及length()函数都用于计算字符串(string)长度,不能用char作为参数。除此之外,size()函数还可以获取vector类型的长度。
举例子:
char ss[100] = “0123456789”;
sizeof(ss); 输出的是100,为分配的字节数;如果ss为int类型的数组,那sizeof(ss)则为1004=400个字节
stren(ss) ; 输出为10,它的内部实现用一个循环计算字符串的长度,直到’\0’为止。不包含’\0’;
char ss = “0123456789”;
stren(ss);输出为10;
sizeof(ss);输出为4,是char性指针的大小;
string str={‘a’,‘b’,‘c’,‘\0’,‘X’};
那么sizeof(str)为5,strlen(str)为3。