1. 程式人生 > >C++ Primer 第三章 標準庫string型別

C++ Primer 第三章 標準庫string型別

標準庫string型別:

string型別支援長度可變的字串.

#include<string>

using std::string;

1.string物件的定義和初始化

string s1;   //預設建構函式,s1為空串

string s2(s1);   //將s2初始化為s1的一個副本

string s3("value");   //將s3初始化為一個字串字面值副本

string   s4(n,'c');   //將s4初始化為字元‘c’的n個副本

2.string物件的讀寫

string型別的輸入操作符: 讀取並忽略開頭所有的空白字元(如空格、換行符、製表符);  讀取字元直至再次遇到空白字元,讀取終止。

2.1讀入未知數目的string物件:

string  word;

while(cin>>word)

cout<<word<<endl;

2.2用getline讀取整行文字:

getline接收兩個引數,一個輸入流物件和一個string物件。 getline函式從輸入流的下一行讀取,並儲存讀取的內容到string中,但不包括換行符.

由於getline函式返回時丟棄換行符,換行符並不會儲存在string物件中。

3.string 物件的操作:

s.empty()    若s為空串,則返回true,否則返回false

s.size()        返回s中字元的個數

s[n]              返回s中位置為n的字元,位置從0開始計數

s1=s2         將s1內容替換為s2的副本

s1==s2      比較s1和s2的內容,相等則返回true,否則返回false

!=   <  <=    >     >=        保持這些操作符的慣有含義

3.1  string 的size和empty操作

判斷string物件是否為空 :if(str.size()==0)    或者   if(str.empty())

3.2 string::size_type型別

size操作返回的是string::size_type型別的值。

為了使用由string型別定義的size_type型別,必須加上作用域操作符來說明所使用的size_type型別是有string類定義的。

任何儲存string的size操作結果的變數必須為string::size_type型別,注意不要把size的返回值賦給一個int變數。   

string::size_type是unsigned型

3.3 string關係操作符

string類定義了關係操作符來比較兩個string值的大小。

string物件比較操作是區分大小寫的

3.4 +操作符

當進行string物件和字串字面值混合連線操作時,+操作符的左右運算元必須至少有一個是string型別的,不能將兩個字串字面值相加。

3.5從string物件獲取字元

s[s.size()-1]表示s的最後一個字元

4.string物件中字元的處理

對string物件中的單個字元進行處理,例如,通常需要知道某個特殊字元是否為空白字元、字母或數字。這些函式在cctype標頭檔案中定義,實際利用了C標準庫的ctype.h標頭檔案中的函式。

isalnum(c)     如果c是字母或數字,則為true

isalpha(c)       如果c是字母,則為true

iscntrl(c)         如果c是控制字元,則為true

isdigit(c)         如果c是數字,則為true

isgraph(c)  如果c不是空格但可列印,則為true

islower(c)    如果c是小寫字母,則為true

isprint(c)如果c是可列印的字元,則為true

ispunt(c)  如果c是標點符號,則為true

isspace(c)  如果c是空白字元,則為true

isupper(c)  如果c是大寫字母,則為true

isxdigit(c)  如果c是十六進位制數,則為true

tolower(c)  如果c是大寫字母,則返回其小寫字母形式,否則直接返回c

toupper(c)  如果c是小寫字母,則返回其大寫字母形式,否則直接返回c