1. 程式人生 > >C++中string與char相互轉換

C++中string與char相互轉換

一、string轉char*

1.data()方法

string str = "hello";
const char* p = str.data(); //或char * p=(char*)str.data();

2.c_str()方法

string str=“world”;
const char *p = str.c_str(); //或char * p=(char*)str.c_str();

3.copy()方法

string str="good boy";
char p[20];
str.copy(p,5,0); //5代表複製幾個字元,0代表複製的起始位置
*(p+5)='\0';     //手動加上結束符

二、string轉char[]

string str = "good boy";
char p[20];
for(int i=0;i<str.length();i++)
p[i] = str[i];
p[str.length()] = '\0'; 

string str="good boy";
char p[20];
str.copy(p,5,0); 
*(p+5)='\0'; 

三、char * 轉string

char* s="good boy";
string str=s;

char s[20]="good boy";
string str=s;

四 、關於string類的輸出

注意:cout函式過載的是string類庫中的string型別,不是cstring或string.h中的。

  1. cstring是MFC或者ATL中的實現,是MFC裡面封裝的一個關於字串處理的功能很強大的類,只有支援MFC的工程才可以使用。

  2. string類既是一個標準c++的類庫,同時也是STL(Standard Template Library,標準模版庫)中的類庫,已經納入C++標準之中。它和CString有本質的區別。

  3. string.h是C語言裡面關於字元陣列的函式定義的標頭檔案,常用函式有strlen、strcmp、strcpy等等,這個標頭檔案跟C++的string類半點關係也沒有,所以 <string>

    並非<string.h>的“升級版本”,他們是毫無關係的兩個標頭檔案。

    五、關於string結束標誌

    在C++中‘\0’不能作為識別string類字串的結尾。