新人淺談C++ string類
C++可以說時C語言的拓展,他相容了C語言的很多優點,同時又有新的特性。
下面我們就來說一下C++裡面的string類,string類是一個對字串操作的類,在C語言中,定義字串的方式一般為定義字元陣列或指標。而在C++中,設計者將其封裝到string這個類裡面。方便進行一些操作。
下面我們以程式碼為例來進行string型別的一些常規操作進行解釋說明
1 #include <iostream> 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 using namespace std; 6 7int main(){ 8 9 string name1 = "xxxx"; 10 string name2 = "xxxxxxxxx"; 11 cout << "String name1 " << name1 << endl; 12 cout << "String name2 " << name2 << endl; 13 cout << "Size of name1 " << name1.size() << endl; 14 cout << "Size of name2 " << name2.size() << endl; 15 16 cout << "Now we will enum the name1" << endl; 17 for(int index = 0; index != name1.length(); index++){ 18 19 cout << name1[index] << endl; 20 } 21 22 if(name1 <= name2){ 23 24 cout << "name1 is less than name2" << endl; 25 } 26 27 string new_str = name1 + name2 + "bbbb"; 28 29 cout << "name1 plus name2 plus bbbb equal " << new_str << endl; 30 31 32 }
首先,string這個類,是包含在iostream標頭檔案的std名稱空間裡。下面我們針對程式碼中所體現的進行解釋說明。
一、定義字串:
與定義其他型別變數一樣,string name1 就是定義了一個字串變數name1。同時可以對其進行初始化操作
與其他型別的變數一樣,string name1 = “aaaaa" ; string name1("aaaa") 均可對字串變數進行初始化操作
二、輸入輸出字串:
string類內部已經對操作符進行了過載,可以使用 cin>> , cout<< 進行流輸入和輸出。
三、獲取字串長度:
對於定義好的 string name1 = ”aaaaa“來說
name1.length()可以獲取到字串的長度,這一點和Java很相類似,畢竟Java也叫C+-,他就是來源於C++
name1.size()同樣可以獲取字串的長度
四、字串的比較:
string name1 = ”aaaaa“
string name2 = ”xxxxxxx"
string name3 = "aaaaaaaaa"
字串可以進行 “==” ,“<",">",">=" "<="運算,型別內部已對運算子進行了過載,這一點可以類比於Python中的魔法方法__add__,也是相當於對運算子進行過載。
值得注意的是,字串的比較是相當於父與子的比較,name1可以看作name3的子串 所以name1 <= name3。不同的字串是無法進行大小的比較。但是可以通過”==“判斷了兩個字串是否相等
五、字串的拼接和索引:
這一個特性和python極為相似
python可以進行字串的拼接和索引,同樣C++也可以
string name1 = ”aaaaa“來說
string new_str = name1 + "bbbb"
那麼new_str = "aaaaabbbb"
如果想知道name1的第一個字元,可以採取name1[0]的方法進行索引,注意,是從零開始索引。
六、對string型別中的單個字元進行操作: