《c++ primer》第三章標準庫類型學習筆記整理_2010/11/06

6. 標準庫類型

string

#include<string>

cin>>str;

① 讀取並忽略開頭所有的空白字符(空格、換行、製表符等)

② 讀取字符直至再次遇到空白字符

可用getline()函數來讀取整行文本:

不忽略開頭空白符

不包括換行符

cout<<str;

string::size_type類型

string庫中size()函數返回的是string::size_type類型,雖然把它賦值給int類型的變量不會出現編譯錯誤,但是由於int類型表示的範圍太小,容易造成溢出。

string類型的大小判斷

按字典排序順序(小寫字母>大寫字母),從第一個字符開始進行大小判斷,一旦判斷出大小,則確定兩個字符串的大小並不再向後進行大小判斷。

string對象對字符的處理

isalnum(c)

如果 是字母或數字,則爲 True

isalpha(c)

如果 是字母,則爲 true

iscntrl(c)

如果 是控制字符,則爲 true 

isdigit(c)

如果 是數字,則爲 true

isgraph(c)

如果 不是空格,但可打印,則爲 true

islower(c)

如果 是小寫字母,則爲 true

isprint(c)

如果 是可打印的字符,則爲 true

ispunct(c)

如果 是標點符號,則 true

isspace(c)

如果 是空白字符,則爲 true

isupper(c)

如果 是大寫字母,則 true

isxdigit(c)

如果是 十六進制數,則爲 true

tolower(c)

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

toupper(c)

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

【例】

////////////////////////////////////////////////////讀入未知數量的字符串

string str;

while(cin>>str)

cout<<str<<endl;

如果輸入:hellohello word

則輸出:hello

hello

world

////////////////////////////////////////////////////計算一個字符串中標點的個數

int x;

int count=0;

string str;

if(getline(cin,str))

{

cout<<str<<endl;

for(string::size_type i=0;i<str.size();i++)

if(ispunct(str[i]))

count++;

}

cout<<count<<endl;

/////////////////////////////////////////////////////把一個字符串所有字母改成大寫

string str;

getline(cin,str);

for(string::size_type i=0;i<str.size();i++)

str[i]=toupper(str[i]);

cout<<str<<endl;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////

vector

是同一種類型的對象的集合,每個對象都有一個對應的整數索引值(類似數組)

#include<vector>

vector是類模版,定義時必須指明是那種類型的容器。

格式:

vector<類型名容器變量名;

vector對象動態增長

在元素值已知的情況下,更有效的方法是先初始化一個空vector對象,然後再動態地增加元素。

vector<T>::size_type

使用size_type類型時,必須指出該類型是在哪定義的。

不能直接寫成vertor::size_type

【例】

////////////////////////////////////////////////////將個5字符串放入字符串容器裏,然後輸出

vector<string> strvect;

string str;

for(string::size_type i=0;i<5;i++)

{

getline(cin,str);

strvect.push_back(str);

cout<<strvect[i]<<endl;

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

iterator

每種容器類型都定義了自己的迭代器類型

vector<T>::iterator 迭代器變量名;

begin():返回指向容器內第一個元素的迭代器。

end():返回指向容器內末端元素的下一個元素的迭代器。

const_iterator:只能用於讀取容器內的元素,不能改變其值。

const vector類型只能用const_iterator迭代器來遍歷。

【例】

////////////////////////////////////////////////////將個5字符串放入字符串容器裏,然後輸出

vector<string> strvect;

string str;

for(string::size_type i=0;i<5;i++)

{

getline(cin,str);

strvect.push_back(str);

cout<<strvect[i]<<endl;

}

////////////////////////////////////////////////////用迭代器修改容器內元素的值,然後輸出

vector<int> intvect(10,1);

for(vector<int>::size_type i=0;i<intvect.size();i++)

cout<<intvect[i]<<" ";

cout<<endl;

vector<int>::iterator intvectiter=intvect.begin();

while(intvectiter!=intvect.end())

{

*intvectiter=0;

cout<<*intvectiter<<" ";

intvectiter++;

}

cout<<endl;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

bitset

二進制位的有序集

#include<bitset>

定義格式:

bitset<長度變量名;

unsigned值初始化bitset對象

該值將轉化爲二進制的位模式,然後順序放入bitset中。

如果bitset的長度小於該數的二進制位數,則自動捨去高位。

如果bitset的長度大於該數的二進制位數,則高位自動補0

string對象初始化bitset對象

String對象直接表示爲位模式,反向放入bitset中。

【例】

////////////////////////////////////////////////////用迭代器修改容器內元素的值,然後輸出

vector<int> intvect(10,1);

for(vector<int>::size_type i=0;i<intvect.size();i++)

cout<<intvect[i]<<" ";

cout<<endl;

vector<int>::iterator intvectiter=intvect.begin();

while(intvectiter!=intvect.end())

{

*intvectiter=0;

cout<<*intvectiter<<" ";

intvectiter++;

}

cout<<endl;

/////////////////////////////////////////////////////輸入一個串,用bitset存好,然後取反等操作

string str;

cin>>str;

bitset<32> strbit(str);

for(size_t i=0;i<strbit.size();i++)

cout<<strbit[i];

cout<<endl;

strbit.flip();//取反

for(size_t i=0;i<strbit.size();i++)

cout<<strbit[i];

cout<<endl;

strbit.set();//全部置1

for(size_t i=0;i<strbit.size();i++)

cout<<strbit[i];

cout<<endl;

strbit.reset();//全部置0

for(size_t i=0;i<strbit.size();i++)

cout<<strbit[i];

////////////////////////////////////////////////////輸入一個正整數,存入bitset,然後輸出

unsigned int x;

cin>>x;

bitset<32> intbit(x);

for(size_t i=0;i<intbit.size();i++)

cout<<intbit[i];

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

---------------------------------《c++ primer》第三章標準庫類型學習筆記整理  2010/11/06    李詩思

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章