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