標準庫string型別
與其他標準庫型別一樣,使用者程式要使用string型別物件,必須包含相關標頭檔案。
1.string物件初始化和定義
string常用的建構函式
這裡需要注意string型別與字串字面值不是同一種類型。
2.string物件的讀寫
從標準輸入讀取string,並將其讀入的儲存在s中。這裡我需要注意兩點
1讀取並忽略開頭所有的空白字串(如空格,換行符,製表符)
2讀取字元直至再次遇到空白符,讀取終止
2.1 getline()
getline()接受兩個引數:一個輸入流物件,一個
注意:讀取這一行的末尾的換行符(\n)將不會存入string物件,同時和cin不一樣的是,getline()不會忽略開頭的換行符(\n)。只要getline()遇到換行符,getline就會停止讀入並返回。若開頭就是換行符(\n),則讀入的就是一個空string。例子如下:
3.string物件的操作
上面表格摘自《C++Primer》,他是string的一些常用操作。
3.1 string::size_type
string型別和許多其他庫都定義了一些配套型別。通過配套型別,庫型別的使用就能與機器無關。size_type就是配套型別之一
在沒過看過《C++Primer》之前,對於上圖表中的函式size(),很多人都會認為他返回的應該是整型數值(int)。但是實際上,size()操作返回的是string::size_type型別的值。它被定義為與unsigned型別(unsigned int 或者unsigned long)具有相同的意義。
3.2 關係操作符(<,<=,>,>=,!=)
string型別定義了幾種關係操作符用來比較兩個string值的大小(string物件比較操作區分大小寫)
關係操作符(<,<=,>,>=,!=)比較大小時採用了和字典排序相同的策略。
1如果兩個 string 物件長度不同,且短的 string 物件與長的 string 物件的前面部分相匹配,則短的string 物件小於長的 string 物件。
2如果string物件的字元不同,則比較第一個不匹配的字元。如下圖
word2的長度大於word1,word3長度大於word1,word2。
3.3 string物件連線
2個string物件連線其實是通過加法實現的。如下例:
3.4和字串字面值的連線(也是使用”+”)
當進行string物件和字串字面值混合操作時,+操作符的左右運算元必須至少有一個string型別的。如下圖:
3.5 從string物件獲取字元
string 型別通過下標操作符([ ])來訪問 string 物件中的單個字元。下標操作符需要取一個 size_type 型別的值,來標明要訪問字元的位置。
3.6 string物件中字元的處理
當要使用上述函式時,要將cctype納入標頭檔案中。這些函式不用死記硬背。只要知道就行,用的時候可以翻書再查。