概念:
string:string可以被看成是以字元為元素的一種容器。具有一些成員函式比如begin()、end(),迭代器可以根據他們進行定位,length() 函式獲取長度。與char型別不同,string 不一定使用null('\0')結束,不能將string直接賦值給char*.
char* : char* 是乙個指標,可以指向乙個字串陣列,至於這個陣列可以在棧上分配,也可以在堆上分配,堆上需要手動釋放。
區別:string 管理記憶體方式有系統完成,一般不會出現記憶體問題
char* 的記憶體管理是由使用者自己處理,很容易出現記憶體不足問題,使用指標很容易出為題。
使用char*處理字串不如string方便,處理過程中使用指標很容易出現記憶體問題。
string轉const char*:
有兩種轉換方式, 1.使用string成員函式c_str();2. 使用string成員函式 data(),二者區別是data()返回沒有結束符的字元陣列。
並且,二者使用c_str()和data() 得到的指標指向位址和原來string的是同乙個位址,所以只要string改變,c_str()和data()的返回值也會改變,使用strcpy_s(dst,length,src) 轉換後 不隨著原來string改變而改變;
相互轉化:
1. string轉換成char型別,使用 c_str()和data() 兩種轉換方式都只能轉換成 const char*如果去掉 const 報錯;
#include //#include #include //#include using namespace std;
int main()
string 轉 char*:直接賦值即可
char轉string:遍歷賦值
using namespace std;
#pragma warning(disable:4996)
#include #include int main()
; s4.copy(p4, s4.length(), 0);
p4[s4.length()] = '\0'; //填充結束符
cout << p4 << endl;
//方法二(遍歷賦值:
string s5 = "1232";
char p5[5] = ;
int i;
for (i = 0; i < s5.length(); i++)
p5[i] = '\0';
cout << p5 << endl;
system("pause");
return 0;
}
char型別和string型別(C ,C
這一篇要講乙個非常重要的話題 char型別與string型別的區別。從字面上說,他們是有區別的 1.char是字元型別 2.string是字串型別 雖然一字之差,但其本質是很大的。2.string是乙個模板型別,也就是乙個class c 在c 中它屬於引用型別 reference type stri...
char型別和string型別的區別
也許有很多同學分不清這個char型別和string型別,區別到底在 一開始他們問我,差別在 我也不太說的清楚,貌似都是字串,貌似是字元,通過查閱資料,我對他們的區別有了進一步的了解。雖然一字之差,但是本質的區別很大。我們從c 與c 的角度來進行闡述一下。1.char是字元型別 屬於值型別 value...
將char型別轉換為string型別
將char型別轉換為string型別 string的建構函式中有此函式原型 string size t n,char c 因此我們可以直接使用此函式 string s 1,a 建立s並將1個a存入到s中 前面的數字代表多少個 擴充套件將char型別放入到vector容器中 第一種就是 vectorv...