C++中string與char相互轉換
阿新 • • 發佈:2019-01-01
一、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中的。
cstring是MFC或者ATL中的實現,是MFC裡面封裝的一個關於字串處理的功能很強大的類,只有支援MFC的工程才可以使用。
string類既是一個標準c++的類庫,同時也是STL(Standard Template Library,標準模版庫)中的類庫,已經納入C++標準之中。它和CString有本質的區別。
string.h是C語言裡面關於字元陣列的函式定義的標頭檔案,常用函式有strlen、strcmp、strcpy等等,這個標頭檔案跟C++的string類半點關係也沒有,所以
<string>
<string.h>
的“升級版本”,他們是毫無關係的兩個標頭檔案。五、關於string結束標誌
在C++中‘\0’不能作為識別string類字串的結尾。