string与char数组相互转换

一、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)、结果:

猜你喜欢

转载自blog.csdn.net/OpenStack_/article/details/88692564
今日推荐