關於C++ string和c類型字符數組的比較。本站提示廣大學習愛好者:(關於C++ string和c類型字符數組的比較)文章只能為提供參考,不一定能成為您想要的結果。以下是關於C++ string和c類型字符數組的比較正文
在c++中string是很便利操作的字符串,支撐多種算數運算和比擬運算,操作起來異常靈巧。string也具有一些容器的性質,可以經由過程迭代器對字符元素停止拜訪
c類型的字符數組有以下三種初始化方法:
//前兩種的初始化方法是同等的,最初一種沒有‘\0' char *cp="hello"; char c_arr[]="hello"; char c_arr2[]={'h','e','l','l','o'};
這三種界說c字符串的方法,個中前兩種固然情勢紛歧樣但寄義是一摸一樣的,沒有差異,在盤算字符長度的時刻都邑比現實顯示的字符長度多1,由於這兩種初始化會在字符串末尾默許添加了一個‘\0'。而第三種初始化方法的長度就是方括號裡的字符數,這類方法其實不會默許末尾停止符'\0'。假如用第三種方法聲明和前兩種方法異樣的字符串則需如許聲明:
char c_arr2[]={'h', 'e', 'l', 'l', 'o', '\0' };
string可以用c字符串停止初始化,如
string s1(cp);//復制cp中的一切字符到s1中(除末尾空字符'\0') string s2(c_arr,2);//復制c_arr兩個字符到s2中 string s3(c_arr2);//error
但留意,當對string用c字符串停止初始化時,或是指定初始化的長度(如string s2(c_arr,2);),假如不指定長度須要c字符串必需以'\0'開頭,假如不是以'\0'開頭則法式會失足。如代碼(string s3(c_arr2);)法式編譯的時刻就會失足。
string類型也能夠轉換成c類型的字符串,可以經由過程string的成員辦法string::c_str()停止轉換。以下
string str("hello"); const char *cp=str.c_str();
以上就是小編為年夜家帶來的關於C++ string和c類型字符數組的比較全體內容了,願望年夜家多多支撐~