一、char数组转string:
1、可以直接赋值。
2、代码:
#include<iostream>
using namespace std;
int main()
{
char a[]=" abc d\0efg ";
string s=a; //直接赋值
cout<<s;
return 0;
}
3、结果:
二、string转char数组:
1、调用strcpy函数,和字符串的data函数: (char数组可以更改)(string转char数组)
①、strcpy不能赋值给char指针 ,只能赋值给char数组;
②、char数组长度,必须大于等于string长度。
1)、代码:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string s="123456";
char c[s.length()];
/*
**调用strcpy函数,和字符串的data函数
**1、strcpy不能赋值给char指针 ,只能赋值给char数组
**2、char数组长度,必须大于等于string长度
*/
strcpy(c,s.data());
c[0]='6';
cout<<c<<endl;
cout<<strlen(c);
return 0;
}
2)、结果:
2、调用data函数:(string转char*)
只能赋给const char指针。
const char指针,只是说它指向的东西,不能再重新赋值,但可以改变指向。
1)、代码:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string str = "hello";
const char* p = str.data();//加const或者用char *p=(char*)str.data();
//*p="Go"; ======>报错:[Error] invalid conversion from 'const char*' to 'char' [-fpermissive]
// [Error] assignment of read-only location '* p'
cout<<p<<endl;
char a[]="Nice";
p=a;
cout<<p;
return 0;
}
2)、结果:(string转char*)
3、调用c_str函数:
同data()。
1)、代码:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
string str = "hello";
const char* p = str.c_str();//加const或者用char *p=(char*)str.data();
cout<<p<<endl;
char a[]="Nice";
p=a;
cout<<p;
return 0;
}
2)、结果: