string是STL當中的一個容器,對其進行了封裝,所以操作起來非常方便。
char *是一個指針,可以指向一個字符串數組,至於這個數組可以在棧上分配,也可以在堆上分配,堆得話就要你手動釋放了。
string的內存管理是由系統處理,除非系統內存池用完,不然不會出現這種內存問題。
char *的內存管理由用戶自己處理,很容易出現內存不足的問題。
char *s="string"的內容是不可以改的;char s[10]="string"的內容是可以改的
當 string 直接轉化成 const char *時,可以通過兩個函數c_str(),data成員函數,例如:
string s="xiaoming";
const char *a=s.c_str();//去掉const會顯示編譯錯誤
const char *b=s.data();
將*char 轉化成string,直接轉化就可以。就是注意輸出的問題:
char *a="xiaoming";
string s;
s=a;
printf("%s\n",s.c_str());