1. 程式人生 > >標準庫string型別

標準庫string型別

與其他標準庫型別一樣,使用者程式要使用string型別物件,必須包含相關標頭檔案。

 

1.string物件初始化和定義

                                                               string常用的建構函式

 

這裡需要注意string型別與字串字面值不是同一種類型。

2.string物件的讀寫

 

從標準輸入讀取string,並將其讀入的儲存在s中。這裡我需要注意兩點

1讀取並忽略開頭所有的空白字串(如空格,換行符,製表符)

2讀取字元直至再次遇到空白符,讀取終止

2.1 getline()

getline()接受兩個引數:一個輸入流物件,一個

string物件。Getline()從輸入流的下一行讀取,並將讀取的這一行存入提供的string物件。

注意:讀取這一行的末尾的換行符(\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的長度大於word1word3長度大於word1word2

3.3 string物件連線

2個string物件連線其實是通過加法實現的。如下例:

 

3.4和字串字面值的連線(也是使用”+”)

當進行string物件和字串字面值混合操作時,+操作符的左右運算元必須至少有一個string型別的。如下圖:

 

3.5 從string物件獲取字元

string 型別通過下標操作符([ ])來訪問 string 物件中的單個字元。下標操作符需要取一個 size_type 型別的值,來標明要訪問字元的位置。

 

3.6 string物件中字元的處理

 

當要使用上述函式時,要將cctype納入標頭檔案中。這些函式不用死記硬背。只要知道就行,用的時候可以翻書再查。