C 新手關於標準庫學習筆記

2021-06-05 10:51:04 字數 4247 閱讀 5031

c++

中定義了乙個內容豐富的抽象資料型別標準庫,其中最重要的是string和vector,他們分別定義了大小可變的字串和集合。下面分別詳細講解兩者還有bitset的一些基本用法。(新手記錄的東西都很瑣碎,沒辦法)

標準庫string型別

寫:標準輸入讀取string型別(cin>>s;)忽略開頭所有空白字元,讀取字元再遇到空白字元讀取終止, 返回所讀的資料流。

getline

(cin,line)讀取整行文字不忽略開頭空白字元(包括換行符),換行符終止讀入,返回輸入流,但是同時丟棄所有換行符,即換行符

不會儲存在string物件中。

常用string物件操作:

s.empty()//

空串返回true,否則false(即返回bool值)

s.size()//

返回s字元個數(字元個數為0,s.size()==0等價於s.empty()為true)

s[n];//

字元陣列

s1+s2;//

物件相加

s1=s2;

// 賦值

v1==v2;!=,<,<=,>,>=//

比較

string::size_type

型別:

size

操作返回的是string::size_type型別的值,個人認為它與int只是儲存範圍大小的區別,是int的兩倍。

特別注意的是,任何儲存string的size操作結果的變數必須為string::size_type型別,不能將size返回值付給乙個int變數。

和字串字面值連線:

strings1="hello";

物件+字面值(+字面值):strings2=s1+"world";(或者s2=s1+"world"+"!";)

將兩個字串字面值相加是非法!!

string s3="hello"+"world";//error

string s4="hello"+"world"+s2;//error

從string物件獲取字元:

下標獲取:

for(string::size_type ix=0; ix!=s.size(); ix++)

tolower(c)//

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

toupper(c)//

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

標準庫vector型別:

vector

是同一種型別的物件的集合,vector不是一種資料型別,是乙個類模板。

定義方式:(vector《變數型別》 變數)vectorivec ;vectorivec ;

vector

和vector都是資料型別。

初始化:vectorfvec(10);//10個元素,每個都置

vector

物件的操作:

v.empty() ;

v.size() ;//

返回v中元素個數

v.push_back(c) ;//

在v的末尾增加乙個值為c的元素

v[n]; v1=v2;v1==v2; !=,<,<=,>,>=

特別注意的是,和string使用size_type型別類似,不能將size返回值付給乙個int變數,vector型別總是包括vector的元素型別。

vector::size_type//ok

vector::size_type//error

陣列是不能擴充套件大小的,而vector物件可以動態增長,這種動態新增元素的方法是陣列不能比擬的

新增元素:

vectortext ;

text.push_back(word) ;//

新增元素word到text

注意,vector下標操作只能讀取、修改已存在的元素,不能向空的物件中新增元素。

for(vector::size_type ix=0 ; ix!=ivec.size() ; ix++)

ivec[ix]=0 ;//

將全部元素變為0

vectorivec ;//empty vector

for(vector::size_type ix=0 ; ix!=ivec.size() ; ix++)

ivec[ix]=ix ;//

用下標方式向vector中新增元素這是辦不到的!!

除了下標訪問vector物件的元素外,還可以用迭代器訪問。迭代器(iterator)是一種檢查容器內元素並遍歷元素的資料型別。

每一種容器都定義了自己的iterator型別:如vector:vector::iterator iter ;//iter是變數

每一種容器都定義了一

對begin和end函式。begin指向容器vector第乙個元素,而end指向最後乙個元素的下乙個元素,即指向乙個不存在的元素,作用在於作為遍歷容器的哨兵。

for(vector::iterator iter=ivec.begin();iter!=ivec.end();iter++)

*iter=0;//

用解引用操作符*來訪問迭代器的元素

標準庫bitset型別

bitset

也是類模板,是二進位制位集的處理。

string

物件和bitset物件之間是反向轉化的,string下標是從0--->size;bitset下標是從size-->0。

strings1("1100");//string

物件直接表示位模式

bitset<32> bitvec(s1);// bitset

模式中下標2、3位為1,下標0、1位為0.

bitset

物件的操作:

b.size();//b

中二進位制位的個數

b.count();//b

中置為1的二進位制位的個數

b.set();// b

中所有二進位制位都置為1

b.reset();//b

中所有二進位制位都置為0

C 標準IO庫 C Primer學習筆記

頭檔案型別 iostream istream 從流中讀取 ostream 寫到流中去 iostream對流進行讀寫,從istream和ostream派生而來 fstream ifstream 從檔案中讀取,由istream派生而來 ofstream 寫到檔案中去,由ostream派生而來 fstre...

C 學習筆記 標準模板庫STL string

string s hello cout 成員函式at 會做範圍檢查,如果超出範圍,會丟擲out of range異常,而下標運算子不會做範圍檢查。vector的遍歷方式後面再提。string s1 good s2 morning good morning morning d 如果3 s1.size ...

C 學習筆記 STL(標準模板庫)

1 首先 需要學習c 模板的概念 2 c stl 標準模板庫 是一套功能強大的 c 模板類,提供了通用的模板類和函式,這些模板類和函式可以實現多種流行和常用的演算法和資料結構,如向量 鍊錶 佇列 棧。3 c 標準模板庫的核心包括以下三個元件 元件描述 容器 containers 容器是用來管理某一類...