string與char陣列相互轉換

Curtis_發表於2019-03-20

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

 

 

相關文章