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 容器是用來管理某一類...