string 物件看成是乙個word,這是這個word中可以是ascii的所有字元。
3.2.2 string 物件的讀寫
1.讀入未知數目的string物件
int main(){
string word;
while(cin>>word)//返回讀入的資料流
cout << word << endl;
return 0;
2.用getline讀取整行文字
int main(){
string line;
while(getline(cin, line))
cout << line << endl;
return 0;
3.2.3 string物件的操作
size()操作返回的是string::size_type
size是這個word的長度
上面說了,這個word中的字元可以是ascii中的任何乙個
因此,自然的,函式來判斷word中的字元是哪個型別的。
isalnum(c) 字母或數字 | isalpha(c) 字母 | iscntrl(c) 控制字元 。 。 。
這些函式都在cctype中.
3.3 標準庫vector型別
vector是乙個類模板
3.3.1 vector物件的定義和初始化
vectorv1; vectorv2(v1); vectorv3(n,i); vectorv4(n);
如果沒有指定元素的初始化式,那麼將進行值初始化,
即:vectorfvec(10); //10 elements, each initialized to 0
for(vector::size_type ix = 0; ix != ivec.size(); ++ix)
for迴圈用!= 而不用<
3.3.2 vector 物件的操作
v.empty(); v.size(); v.push_back(t); v[n]; v1 = v2; v1 == v2; !=, < <=, >, >=
3.4 迭代器簡介
除了使用下標來訪問vector物件的元素外,標準庫還提供了另一種訪問元素的方法,使用迭代器.
迭代器是一種檢查容器內元素並遍歷元素的資料型別.
標準庫為每一種標準容器定義了一種迭代器型別.
vector::iterator iter;
begin操作返回的是第乙個元素,end操作返回的是迭代器指向的vector的"末端元素的下乙個".
vector::iterator iter = ivec.begin();
如果vector為空,begin返回迭代器與end返回的迭代器相同.
由end操作返回的迭代器並不指向vector中任何實際元素,只起乙個哨兵的作用.
迭代器型別的解引用操作返回迭代器當前所指向的元素. 根據上面定義,*iter 就是 ivec[0]。
*iter = 0; 就是將ivec的第乙個元素賦值0
如果iter指向第乙個元素,則++iter指向第二個元素.
for(vector::size_type ix = 0; ix != ivec.size(); ++ix)
ivec[ix]=0;
for(vector::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
iter = 0;
const_iterator,唯讀迭代器.
迭代器的算術操作
iter + n ; iter - n; iter1 - iter2; vector::iterator mid = vi.begin() + vi.size() / 2;
3.5 標準庫bitset型別
C primer第三章 標準庫型別
一 標準庫string型別 include 1 string物件的定義和初始化 表3.1幾種初始化string物件的方式 string s1 預設建構函式,s1為空串 string s2 s1 將s2初始化為s1的乙個副本 string s3 value 將s3初始化為乙個字串字面值的副本 stri...
C Primer 第三章 標準庫型別
c 定義了兩種最重要的標準庫型別 string 和 vector,它們分別定義了大小可變的字串和標準庫。其中,string型別支援長度可變的字串,vector可用於儲存一組指定類 型的物件。3.2標準庫string 型別 string型別支援長度可變的字串,使用者程式要使用string型別物件,必須...
《C Primer》 第三章 標準庫型別
除低階資料型別,c 標準庫還定義了許多更高階的抽象資料型別 abstract data type 比如string,vector,bitset。命名空間的using宣告 使用using宣告可以在不需要加字首namespace name 的情況下訪問命名空間中的名字。using namespace n...