string 與char *的區別

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());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章