對於string的定義不必過於糾結,可以將其理解成一種比較靈活的字符串類型。
下面主要對定義,初始化和操作string對象作一個簡單總結。
一.使用string類型的準備
#include <string>
using namespace std; //或者 using std::string;
當然,要使用C++實現基本的輸入輸出操作,#include<iostream>也是不可少的。
二.定義和初始化string對象
下面給出了常用的幾種方式:
string s1; //默認初始化,s1爲空串
string s2="Hello World"; //s2的內容是"Hello World"
string s3(5,'A'); //s3的內容是5個'A'
初始化的過程中也可以使用已經定義的string對象:
string s4 = "Nice to meet you!"; //s4的內容是"Nice to meet you!"
string s5(s4, 5); //s5的內容是s4的第5個字符之後的內容(s4的前5個字符被無視)
string s6(s4, 8, 4); //s6的內容是是s4的第8個字符之後的4個字符(注:空格也算作字符)
完整代碼及運行結果:
注:如果只是想定義一個string對象但不初始化,而採用輸入的方式將輸入內容讀取到定義的對象中,一定要記住:
string對象會自動忽略輸入開頭和結尾的空格,也就是說真正讀取的內容從第一個真正的字符開始,直到遇到下一處空白結束!
三.部分常用的簡單操作
1.比較(兩個string對象s1和s2)
原則:a<b<...<z或A<B<...<Z(注:同一字母的大小寫爲兩種字符,大小比較可參考ASCII碼值)
①:s1與s2在某些位置上不一致時,結果爲第一對不同字符相比較的結果。
②:s1與s2長度不同,且從較短串的第一個字符到最後都與較長串對應位置的字符相等,則較短串小於較長串。
2.相加
例如s1='str' s2='ing' s3=s1+s2 s3的內容則爲“string”。
3.對string對象中的每個字符進行處理
C++11提供一種特殊的語句:範圍for語句
eg:使用範圍for語句輸出一個string對象的每個字符
string s1("abcdefg");
for (auto c : s1) //對於s1中的每個字符
cout << c << endl;
注:部分較老的編譯器可能無法運行。