string型別和char型別相互轉換

2021-10-02 16:23:57 字數 1333 閱讀 8701

概念:

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...