第7次課.庫(kù)類型_第1頁(yè)
第7次課.庫(kù)類型_第2頁(yè)
第7次課.庫(kù)類型_第3頁(yè)
第7次課.庫(kù)類型_第4頁(yè)
第7次課.庫(kù)類型_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余18頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

回顧靜態(tài)綁定和動(dòng)態(tài)綁定的概念多態(tài)性的意義和作用虛函數(shù)的定義方法抽象基類的作用和定義方法虛析構(gòu)函數(shù)的作用和使用方法如何在程序中實(shí)現(xiàn)多態(tài)性1目標(biāo)string類型的介紹string的輸入和輸出string的成員函數(shù)vector類型的介紹vector類型的構(gòu)造函數(shù)2標(biāo)準(zhǔn)庫(kù)string類型string類型支持長(zhǎng)度可變的字符串,C++標(biāo)準(zhǔn)庫(kù)將負(fù)責(zé)管理與存儲(chǔ)字符相關(guān)的內(nèi)存,以及提供各種有用的操作typedefbasic_string<char>string;typedefbasic_string<wchar_t>wstring;要使用string類型對(duì)象,必須包含相關(guān)頭文件#include<string>usingnamespacestd::string;3string對(duì)象的定義和初始化strings1; //默認(rèn)構(gòu)造函數(shù),s1為空串strings2(s1); //將s2初始化為s1的一個(gè)副本strings3(“value”); //將s3初始化為一個(gè)字符串字面值副本strings4(n,‘c’); //將s4初始化為字符‘c’的n個(gè)副本字符串常量與標(biāo)準(zhǔn)庫(kù)string類型不是同一種類型4string對(duì)象的讀寫(xiě)使用用cin的“>>”提取運(yùn)算符進(jìn)行讀操作,使用cout的“<<”輸入運(yùn)算符進(jìn)行輸出操作5#include<iostrem>#include<string>usingnamespacestd;voidmain(){ stringstr; cout<<“inputyourname:” ; cin>>str; cout<<“yournameis”<<str<<endl;}用getline讀取整行文本2-1(嵌入式里面很少用)函數(shù)功能:從輸入流的讀取一行,并保存讀取的內(nèi)容到string對(duì)象中,但不包括換行符函數(shù)原型:template<class_E,class_TYPE,class_A>inlinebasic_istream<_E,_TYPE>&getline( basic_istream<_E,_TYPE>&Istream, basic_string<_E,_TYPE,_A>&Xstring, const_E_D=_TYPE::newline());函數(shù)參數(shù):1輸入流對(duì)象;2string對(duì)象;3結(jié)束符函數(shù)返回值:輸入流對(duì)象6用getline讀取整行文本2-2#include<string>#include<iostream>usingnamespacestd;voidmain(){ strings1; cout<<"Enterasentence(use<space>asthedelimiter):"; getline(cin,s1,''); cout<<"Youentered:"<<s1;}7常用的成員函數(shù)2-1成員函數(shù)功能描述size()得到字符串的大小length()同上empty()判斷是否為空substr()截取字符串find()在字符串中查找字符或者字符串replace()替代compare()比較字符串insert()插入字符append()追加字符rfind()反向查找swap()交換字符串重載運(yùn)算符[],+=,=,+,>,<,>=,<=,!=,==,>>,<<等8常用的成員函數(shù)2-2#include<string>#include<iostream>usingnamespacestd;voidmain(){ stringstrinfo="http://*---HelloWord!......------";strset="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; intfirst=strinfo.find_first_of(strset); if(first==string::npos) cout<<"notfindanycharacters"<<endl; intlast=strinfo.find_last_of(strset); if(last==string::npos) cout<<"notfindanycharacters"<<endl; cout<<strinfo.substr(first,last-first+1)<<endl;}9string::size_type類型2-1string類類型和許多其他庫(kù)類型都定義了一些配套類型(companiontype)通過(guò)這些配套類型,庫(kù)類型的使用就能與機(jī)器無(wú)關(guān)(machine-independent)與unsigned型(unsignedint或unsignedlong)具有相同的含義,可以保證足夠大能夠存儲(chǔ)任意string對(duì)象的長(zhǎng)度成員函數(shù)中很多參數(shù)或者返回值都是string::size_type類型10string::size_type類型2-2#include<iostream>#include<string>usingnamespacestd;voidfun(conststringstr){ if(str.empty()){ //str.size()==0 return;// } string::size_typelen=str.size(); cout<<"Thesizeof"<<str<<"is"<<len<<endl;}voidmain(){ stringstr("Theexpenseofspirit\n"); fun(str);}11string的關(guān)系運(yùn)算符2-1string類重載了關(guān)系運(yùn)算符關(guān)系操作符用來(lái)比較兩個(gè)string值的大小string對(duì)象比較操作是區(qū)分大小寫(xiě)的==操作符來(lái)測(cè)試兩個(gè)string對(duì)象是否相等兩個(gè)string對(duì)象相等是指它們的長(zhǎng)度相同,且含有相同的字符!=操作符來(lái)測(cè)試兩個(gè)string對(duì)象是否不等關(guān)系操作符<,<=,>,>=分別用于測(cè)試一個(gè)string對(duì)象是否小于、小于或等于、大于、大于或等于另一個(gè)string對(duì)象12string的關(guān)系運(yùn)算符2-2#include<iostream>#include<string>usingnamespacestd;voidmain(){ stringbig="big",small="small"; strings1=big; if(big>small) cout<<“big>small”; if(big==s1) cout<<“big==s1”;}13string對(duì)象的賦值可以把一個(gè)string對(duì)象賦值給另一個(gè)string對(duì)象例如:stringst1,st2="Theexpenseofspirit";st1=st2;賦值操作后,st1就包含了st2串所有字符的一個(gè)副本先把st1占用的相關(guān)內(nèi)存釋放掉,然后再分配給st1足夠存放st2副本的內(nèi)存空間,最后把st2中的所有字符復(fù)制到新分配的內(nèi)存空間14兩個(gè)string對(duì)象相加string對(duì)象的加法被定義為連接concatenation通過(guò)使用加操作符+或者復(fù)合賦值操作符+=例如:strings1(“hello,”),s2("world\n");strings3=s1+s2;s1+=s2;和字符串常量的連接時(shí),+操作符的左右操作數(shù)必須至少有一個(gè)是string類型例如:s3=s1+“,”; //正確s3=“hello”+“,”; //錯(cuò)誤s3=s1+“,”+“world”; //正確s3=“hello”+“,”+s2; //錯(cuò)誤15從string對(duì)象獲取字符string類型通過(guò)下標(biāo)操作符([])來(lái)訪問(wèn)string對(duì)象中的單個(gè)字符下標(biāo)操作符需要取一個(gè)size_type類型的值使用方式和字符數(shù)組類似16#include<string>#include<iostream>usingnamespacestd;voidmain(){ stringstr("somestring"); for(string::size_typeix=0;ix!=str.size();++ix) cout<<str[ix]<<endl;}標(biāo)準(zhǔn)庫(kù)的vector類型vector是同一種類型的對(duì)象的集合vector的數(shù)據(jù)結(jié)構(gòu)很像數(shù)組,能非常高效和方便地訪問(wèn)單個(gè)元素vector是一個(gè)類模板(classtemplate)要使用vector必須包含相關(guān)頭文件#include<vector>usingstd::vector;17vector的定義vector保存何種對(duì)象的類型,通過(guò)將類型放在類模板名稱后面的尖括號(hào)中來(lái)指定類型vector的定義語(yǔ)法:vector<類型名>對(duì)象名稱;例如:vector<int>ivec; vector<Sales_item>Sales_vec;18vector對(duì)象的初始化vector類定義了好幾種構(gòu)造函數(shù)vector<T>v1;

//vector保存類型為T(mén)的對(duì)象。默認(rèn)構(gòu)造函數(shù)v1為空vector<T>v2(v1);//v2是v1的一個(gè)副本vector<T>v3(n,i);//v3包含n個(gè)值為i的元素vector<T>v4(n);

//v4含有值初始化的元素的n個(gè)副本19vector元素值的初始化如果沒(méi)有指定元素的初始化式,那么標(biāo)準(zhǔn)庫(kù)將自行提供一個(gè)元素初始值進(jìn)行值初始化(valueinitializationd)。初始值將用來(lái)初始化容器中的每個(gè)元素,具體取決于存儲(chǔ)在vector中元素的數(shù)據(jù)類型例如: vector<int>fvec(10);//10個(gè)int元素,初始化為0如果vector保存的是含有構(gòu)造函數(shù)的類類型(如string)的元素,標(biāo)準(zhǔn)庫(kù)將用該類型的默認(rèn)構(gòu)造函數(shù)創(chuàng)建元素初始值例如: vector<string>svec(10);//10個(gè)string元素,初始化為NULL20vector成員函數(shù)vector標(biāo)準(zhǔn)庫(kù)提供了許多類似于string對(duì)象的操作成員函數(shù)功能描述size()返回元素的個(gè)數(shù)clear()清除所有元素empty()判斷是否為空push_back()在末尾添加一個(gè)元素pop_back()刪除最后一個(gè)元素erase()刪除某個(gè)元素insert()插入一個(gè)元素[]返回元素=復(fù)制副本重載運(yùn)算符[],=,>,<,>=,<=,!=,==等21vector使用#include<string>#include<vector>#include<iostream>usingnamespa

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論