附錄文件和源代碼_第1頁
附錄文件和源代碼_第2頁
附錄文件和源代碼_第3頁
附錄文件和源代碼_第4頁
附錄文件和源代碼_第5頁
免費預(yù)覽已結(jié)束,剩余77頁可下載查看

下載本文檔

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

文檔簡介

1、610,8812468= 21000+4 100 +6 10 +8 2468=2 103 +4102 +6 101 + 8 用 十六進(jìn)制數(shù)是16的冪的。這意味著十六進(jìn)制10 16 + 0169-16 值,需要十六進(jìn)制ab cd ef八 進(jìn) 制十 進(jìn) 制= 182 +7 81 +7 = 1 64 +78 +7 = 附錄A 計數(shù)系附錄A 計數(shù)系數(shù)為 2)。二進(jìn)制表示法只使用兩個數(shù)字0 和 1。例如,10011011 就是二進(jìn)制數(shù)。但 C+沒有提供 組織的,每個字節(jié)包8 位(正如2 的 01,依此類推。例如A.12字節(jié)的整數(shù)A.1 2字節(jié)整數(shù)樣做的原因是,每個十六進(jìn)制位4位。A.2說明了這種對應(yīng)關(guān)系

2、十六進(jìn)制對應(yīng)的二進(jìn)制012345678二 進(jìn) 制十 進(jìn) 制= 127 +0 26 +0 25 + 124 +1 23 +0 22 + 121 +1 = 128 +0+0 +16+8 +0+ 2+= 十六進(jìn)十 進(jìn) 制= 2162 +11161 +3 = 2 256+11 16 +3 = 附錄A 計數(shù)系0 xA4對應(yīng)于二進(jìn)制10100100。同樣,可以輕松地將二進(jìn)制值轉(zhuǎn)換為附錄A 計數(shù)系0 xA4對應(yīng)于二進(jìn)制10100100。同樣,可以輕松地將二進(jìn)制值轉(zhuǎn)換為十六進(jìn)制,方法4 位轉(zhuǎn)換為對應(yīng)的十六進(jìn)制位。例如,二進(jìn)制值 10010101 將被轉(zhuǎn)換為 0 x95。BigEndianLittle 對同一個

3、值的表示可能并不相同。例如, el理器使BigEndian方案(但最后的兩種系統(tǒng)可配置成使用上述任案 el 計算機(jī)(Little Endian)中,0 xABCD 在內(nèi)存中將0 xCD 0 xAB。Motorola(Big Endian)計算機(jī)按相反的 0 xAB0 xCD 作十六進(jìn)制對應(yīng)的二進(jìn)制9ABCDEF 和 C+關(guān)鍵 關(guān)鍵字,其中以粗體顯示的關(guān)鍵 和 C+關(guān)鍵 關(guān)鍵字,其中以粗體顯示的關(guān)鍵字也ANSI C99 標(biāo)準(zhǔn)中的關(guān)鍵C+11 新C+關(guān)鍵,表 &|!s s s 附錄B C+C+庫保留使用(但并非絕對不能用)的稱保留名稱,它們是保留給 C+庫使用的名稱。如果您將這種名稱用作標(biāo)識符,附

4、錄B C+C+庫保留使用(但并非絕對不能用)的稱保留名稱,它們是保留給 C+庫使用的名稱。如果您將這種名稱用作標(biāo)識符,作全局變量。因此,程序員不能在全局名稱空間使用諸如 gink、 Lynx和_lynx等名稱#include using namespa為 tan(double); / t該原型確實與庫函數(shù)tan的原型不同,因為后者的返回double,但特征標(biāo)部分確實相同。然char*tan(char*);/數(shù) 改變關(guān)鍵auto 用法,并賦予其他關(guān)鍵字(如virtualdelete)新用法的原因所在。C+11提供了另一種避免新增關(guān)鍵字class/virtualvoidunfold().=fina

5、l;/ 。數(shù)名和 /ut#includemain ()cout iostream(5) n; return 0;cout = a -1; return ASCII字符。ASCII 碼最常用的編碼,它Unicode 的一個子集(一個常小的子集。C+使得能夠直接表示大多數(shù)字符,方法是將字符用單引號括起,例如A表示字符 A。, ASC字符十 進(jìn) 制0八 進(jìn) 制00二 進(jìn) 制ASCII 名ASCII字符。ASCII 碼最常用的編碼,它Unicode 的一個子集(一個常小的子集。C+使得能夠直接表示大多數(shù)字符,方法是將字符用單引號括起,例如A表示字符 A。, ASC字符十 進(jìn) 制0八 進(jìn) 制00二 進(jìn)

6、制ASCII 名123 45 67 89 空!”#$%附錄C ASCII十 進(jìn) 制八 進(jìn) 制二 進(jìn) 制ASCII 名&()*+-. 123456789;? 附錄C ASCII十 進(jìn) 制八 進(jìn) 制二 進(jìn) 制ASCII 名&()*+-. 123456789;? Z附錄C ASCII十 進(jìn) 制八 進(jìn) 制二 進(jìn) 制ASCII 名-abcd p 附錄C ASCII十 進(jìn) 制八 進(jìn) 制二 進(jìn) 制ASCII 名-abcd p z|則首先應(yīng)用優(yōu)先級高的運算符。如果兩個運算符的優(yōu)先級相同C+使用結(jié)合性規(guī)則來決定哪個運算符則首先應(yīng)用優(yōu)先級高的運算符。如果兩個運算符的優(yōu)先級相同C+使用結(jié)合性規(guī)則來決定哪個運算符中

7、R-L)結(jié)合。從左到右的結(jié)合性意味著首先應(yīng)用最左邊的運算符,而從右到左的結(jié)合性則意味著首先應(yīng) 優(yōu)先級第 3 組(全是一元運算符!R-邏輯位+一元加號(正號-一元減號(負(fù)號 - &地*解(間接值類型轉(zhuǎn)換,即長度,以字節(jié)動態(tài)分配內(nèi)new動態(tài)分配數(shù)動內(nèi)delete 動數(shù)(表達(dá)式分L-函數(shù)調(diào)值構(gòu)造,即數(shù)組下間接成員運算.直接成員運算的類型轉(zhuǎn)的類型轉(zhuǎn)的類型轉(zhuǎn)s 的類型轉(zhuǎn)類型標(biāo) - 作用運算運 算 符結(jié) 合 性附錄 優(yōu)先級第 5 組(全是二元運算符優(yōu)先級第 6 組(全是二元運算符 優(yōu)先級第 10 組(一元運算符=R-簡單賦*乘并賦除并賦求模并賦加并賦減并賦AND并賦XOR 并賦OR 并賦附錄 優(yōu)先級第 5

8、 組(全是二元運算符優(yōu)先級第 6 組(全是二元運算符 優(yōu)先級第 10 組(一元運算符=R-簡單賦*乘并賦除并賦求模并賦加并賦減并賦AND并賦XOR 并賦OR 并賦左移并賦右移并賦R-條|L-L-|L-L-按位XOF(異或&L-= L-等不等大L-左右+L-加-減*L-乘/除模(余數(shù). L-成員解間接成員解運 算 符結(jié) 合 性附錄D 運算符優(yōu)先附錄D 運算符優(yōu)先況,表 D.1 將運算符標(biāo)記為一元組或二元組。3+5*對于下面的例子,編譯器必須決定先將 120 除以 6,還是先將 6 5 相乘:120/6*char * str = Whoa; char ch = *str+;:后綴+運算符的優(yōu)先級比

9、一元運算符*高,這意味著加號運算符將str進(jìn)行操作,而不是對*str進(jìn)操作。也就是說,將指針1,使之指向下一個字符,而不是修改被指針指向的字符。不過,由于+是后綴形式,因此將在將*strch后,再將指1。因此,上述表達(dá)式將字Wch,然后移動指針 str,使之指向字符 h。char * str = Whoa; char ch = *+str;前綴+運算符和一元運算符*的優(yōu)先級相同,但它們是從右到左結(jié)合的。因此,str(不是*str)將加 1。因為+運算符是前綴形式,所以首先將 str 加 1,然后將得到的指針執(zhí)行解 算符和二元按位 AND 運算符。,L-將兩個表達(dá)式合并成一L-異運 算 符結(jié) 合

10、 性 的;第三組C+11新增的運算符:alignof和noexcept。本附錄將簡要地對這些運算符做一總結(jié)所有的 0 變成 1,C+共有 6 個這樣的運算符:、&、|和。E.1.1 移位運算value其中,value是要移 3 位:13 E.1 左移運算存器的內(nèi)容,而 C+左移運算符生成一個新值,而不修改原來的值。例如,請看下面的代碼:x=y=x不會修改 x 一樣。附錄E 其他運算=x4;/regularassignment y=附錄E 其他運算=x4;/regularassignment y17E.2 右移運算q=q=/replace43by432,or E.1.2 邏輯按位運算 unsig

11、nedcharx= 每個1 011111100252(圖E.3 16 位的例子。新值是原E.3 按位非運算算符 附錄E 其他運算E.4 按位運算 b1|b2附錄E 其他運算E.4 按位運算 b1|b2a|=b;/oa|符 E.5 按位運算a=b;/oa符 為 b1 =b1 =b2 =01b2 =10b1 =b1 =b2 =01b2 =11附錄E 其他運算E.6 按位運算表E.3總結(jié)了&運算符是如何運算的b1&b2 的值a&=b;附錄E 其他運算E.6 按位運算表E.3總結(jié)了&運算符是如何運算的b1&b2 的值a&=b;/oa&E.1.3 按位運算符的替代表對于幾種按位運算符,C+提供了替代表示

12、,如E.4所示。它們適用于字符集中不包含傳統(tǒng)按位運b=complabitandb;/sameasb=a&c=axor/sameasc=aE.1.4 幾種常用的按位運算符技 0 開始,因此第n位的值為2n。例如,只有第31 的整數(shù)的23(8)A 介紹的,各個位都 lottabits = lottabits | bit; lottabits |= bit;它們都將對應(yīng)的位設(shè)置1,而不管這一位以前的值是多少。這是因為110 1操作1。lottabits 中其他所有位都保持不變,這是因為對0 0 OR 操作將得到01 0OR操作將生1&| b1 =b2 =b2 =00b2 =01附錄E 其他運算附錄E

13、 其他運算lottabits = lottabits bit; lottabits = bit;對1 0 執(zhí)行 XOR 操作的結(jié)果為 1。 lottabits= lottabits &該語句關(guān)閉相應(yīng)的位,而不管它以前的狀態(tài)如何。首先,運算符bit 將原來為 1 的位設(shè)置為 0,原來為 0 的位設(shè)置10 和任意值A(chǔ)ND 操作都將0,因此關(guān)閉相應(yīng)的位。lottabits 中其他所有位都保持不變,這是因為對 1 和任意值執(zhí)行 AND 操作時,該位的值將保持不變。lottabits &= bit; if(lottabits=bit)/notrue。因此修補的方式是,首先lottabitsbitAND操

14、作,這樣生成的值的對應(yīng)位保持不變,因為1 和任何值A(chǔ)ND 操作都將保持該值不變;而其他位都為0,因為0 和任何值執(zhí)行 AND 操作的結(jié)果都為 0。正確的測試如下:if(lottabits&bit=bit)/testingaif(lottabits&/testinga class voidshow_in()const; voidshow_ft()const; void use_ptr() leob;/nowob.inches le:*pt= 附錄E 其他運算 附錄E 其他運算 le:*pt=leEx leEx le*pq=newEx coutob1.*ptendl;/displayinchesm

15、emberofob1 coutob2.*ptendl;/displayinchesmemberofob2 cout*ptendl;/displayinchesmemberof*po 改變上述示例中使用的對象,將改變使用的 inches 成員。不過也可以修改 pt 指針本身。由于 feet 的類型與inches 相同pt 重新feet 成員(inches 成員)ob1.*pt feet 成員pt=/resetcoutob1.*ptendl;/displayfeetmemberof void(*pf)();/pfstoavoidle:*pf)() const;/ pf了一個指向 stoanleme

16、mber pf=le(ob3.*pf)(); / invoke show_inches() using the ob3 pf=/applyshow_feet()totheob3le類的數(shù)據(jù)成程E.1 / memb_pt.cpp- dereferencing poerstoclassmembers #include using class voidshow_in()const; voidshow_ft()const; void use_ptr() feet=inches=附錄E 其他運算feet=inches=12*voidle:show_in() coutinches“voidle:show_

17、ft() coutfeet附錄E 其他運算feet=inches=12*voidle:show_in() coutinches“voidle:show_ft() coutfeet“voidle:use_ptr() =“Setpttopt:“*ptcout“yard.*pt:“yard.*ptendl; pt = &Ex“Setpttopt:“*ptcout“yard.*pt:“yard.*ptendl; void (Exle:*pf)() const;“Setpftocout *pf)(): (this-cout“Using(yard.*pf)(): Ex lecar(15); Ex leva

18、n(20); Ex lecout “car.use_ptr() output:n”; cout pt: 180yard.*pt: Set pt to &Exthis-pt: 15yard.*pt: SetpftoUsing (this-*pf)(): 180 inches Using (yard.*pf)(): 36 van.use_ptr() Set pt to &Exthis-pt: 240yard.*pt: Set pt to &Exthis-pt: 20yard.*pt: SetpftoUsing (this-*pf)(): 240 inches Using (yard.*pf)():

19、 36 附錄E 其他運算附錄E 其他運算方式。例如,一個系double 在 E.2 / align.cpp - checking alignment #include using namespastruct things1charstruct charthings2 cout“charalignment:“alignof(char)endl; coutalignment:“)cout “double alignment: “ alignof(double) endl; cout“things1alignment:“alignof(things1)endl; cout“things2alignm

20、ent:“alignof(things2)endl; cout“things1size:“sizeof(things1)endl; cout “things2 size:“ sizeof(things2) endl; return 0;char alignment: alignment: double alignment: things1 alignment: things2 alignment: things1 size: things2 size: 8 的整數(shù)倍。在程E.2 中,每個結(jié)構(gòu)的所有成員只13 位,但結(jié)構(gòu)要求占用的的整數(shù)倍,這意味著需要填充一些位。在每個結(jié)構(gòu)中,double 成員

21、的8 的整數(shù) 的 ):異常lt的結(jié)本附錄的技術(shù)性較強(qiáng),但如果您只想了解模板類string 的功能,可以將重點放在對本附錄的技術(shù)性較強(qiáng),但如果您只想了解模板類string 的功能,可以將重點放在對各string 類方法string 類是templateclass charT, class traits = class Allocator = allocator class basic_string .;其中,chatT 在字符串中的類型;traits 參數(shù)是一個類,它定義了類型要被表示為字符串時, typedefbasic_stringwchar_twstring;除char和wchar_t外,

22、還可以通過定義traits類和使用basic_string模板來為其他一些類型創(chuàng)建一個string類13種類型和一個常typedef typedef Allocatortypedeftypename typedeftypenametypedeftypename typedeftypenametypedef typename Allocator:potypedeftypenameAllocator:const_potraits 是對應(yīng)于特定類型(如 char_traits)的模板參數(shù);traits_type 將成為該特定類型的 typedef typedef typename traits:ch

23、ar_type charsize_type與size_of的用法相似,只是它根char返回字符串的長度,在這種情況下,size_typesize_of等效。size_type是一種無符號類型 附錄F 模板類char 具體化來說,po er char *reference char &類型。然而自己設(shè)計的類型創(chuàng)建具體化,則這些類型(po er 和 reference)可以指向類,與基本指針和有附錄F 模板類char 具體化來說,po er char *reference char &類型。然而自己設(shè)計的類型創(chuàng)建具體化,則這些類型(po er 和 reference)可以指向類,與基本指針和有相t

24、ypedefsrandomstypedefsrandomstypedeftypedefsic const size_type=-size_type是無符號的,因此將-1數(shù)據(jù)來描述這些效果。F.1列出了一些方法,它們的返回值和 ,正如第 string對象管理的符串(string string 內(nèi)容不一定位于對象中,因此 可以使用 STL reverse()函數(shù)來反轉(zhuǎn)字符串的內(nèi)容:stringcinreverse(word.begin(), 返 回 值指向字符串第一個字符的迭代一個const_iterator,指向字符串中的第一個字符為超尾值的迭代為超尾值的為超尾值的反轉(zhuǎn)迭代為超尾值的反轉(zhuǎn)指向第一

25、個字符的反轉(zhuǎn)迭代指向第一個字符的反轉(zhuǎn)字符串中的元素數(shù),等于begin()到end()之間的距size()給字符串分配的元素數(shù)。這可能大于實際的字符數(shù),capacity)ize的值表示在字符串末尾附加多少字符后需要分配內(nèi)存字符串的最大長一個指向數(shù)組第一個元素的constcharT*指針,其第一個size()元素等于*this 控制的字符串中對應(yīng)的元素,其下一個元素為charT charT(0)字符(字符串末尾標(biāo)記)string 對象本身被修改后,該指針可一個指向數(shù)組第一個元素的constcharT*指針,其第一個size()元素等于*this 控制的字符串中對應(yīng)的元素,其下一個元素是charT

26、類型的charT(0)字符(字符串尾標(biāo)識)。當(dāng) string 對象本身被修改后,該指針用于為字符串object 分配內(nèi)存的 allocator 對象的附錄F 模板類該數(shù)組可能(但不一定)是string對象管理的字符串的副本(string對象采用附錄F 模板類該數(shù)組可能(但不一定)是string對象管理的字符串的副本(string對象采用串字符是存在的。因此,c_str()方法期望接受一個 C-風(fēng)格字符串參數(shù):string file(tofu.man); 同樣,data()和 size()可用作這種函數(shù)的參數(shù),即接受指向數(shù)組元素的指針和表示要處理的元素string ire(Donotstakem

27、e,ohmyvlad=ire.data(), explicit basic_string(const Allocator& a = Allocator(); basic_string(const charT*s, constAllocator& a= Allocator(); basic_string(constcharT*s,size_typen,constAllocator&a=Allocator(); basic_string(const basic_string& str);basic_string(const basic_string& str, const Allocator&);

28、 basic_string(const basic_string& str, size_typesize_type n = n,constAllocator&a=Allocator(); basic_string(basic_string& str) noexcept; basic_string(constbasic_string&str,constAllocator&);basic_string(size_type n, charT c, const Allocator& a = Allocator(); templatebasic_string(InputIterator begin, I

29、nputIterator end, constAllocator&a=Allocator();basic_string(initializer_list, const Allocator& = basic_string(const basic_string& str, =size_typen=,constAllocator&a=C+11 用三個構(gòu)造函數(shù)取代了它上述列表中的第24個,這提高了編碼效率。真正新增的 constAllocator&a=Allocator 是用于管理內(nèi)存的 allocator 類的模板參數(shù)名;Allocator()是這個類的默認(rèn)構(gòu)造函數(shù)。因此,默認(rèn)情況下,構(gòu)造函數(shù)將使用

30、 allocator 對象的默認(rèn)版本,但它們使得能夠選擇使用 allocator 對象的其他版F.2.1 默認(rèn)構(gòu)造函explicit basic_string(const Allocator& a = string bean; wstringtheory;上 size()方法返回F.2.2 C-風(fēng)格字符串的構(gòu)造函看,它使得charT具體化初始化為一charT數(shù)組附錄F 模板類basic_string(const charT* s, const Allocator& a = 的字符數(shù),該構(gòu)造traits:length()方法用s 指向的數(shù)組(s 不能為空指針?;?string 附錄F 模板類ba

31、sic_string(const charT* s, const Allocator& a = 的字符數(shù),該構(gòu)造traits:length()方法用s 指向的數(shù)組(s 不能為空指針?;?string toast(Heres looking at you, size()方法返回的值等于 trains:length()capacity()方法返回一個至少等于 size()F.2.3 C-風(fēng)格字符串的構(gòu)造函使用部分 C-風(fēng)格字符串的構(gòu)造函數(shù)泛的意義上說,該構(gòu)造函數(shù)使得能夠使用 charT 數(shù)組的一部分來初始化 charT 具體化:basic_string(const charT* s, size_t

32、ype n, const Allocator& a= 則該構(gòu)造函數(shù)要求 s 不能是空值指針,同時 元素數(shù)目。如果n 等于,該構(gòu)造函數(shù)一個 out_of_range 異常(由于 n 的類型為 size_type,nsize()方法返回capacity()方法返回一個至少等于 size()F.2.4 使用左basic_string(const basic_string& string mel(Im ok!); stringida(mel);其中,ida mel 管理的字符串副本。basic_string(const basic_string& str, const size()方法返回 str.s

33、ize()的值str.data()basic_string(const basic_string& str, size_type constAllocator&a=Allocator();,size_typen=,string att(ephone home.); stringet, 4);:string att(ephonehome.); stringpt, 4, 5);string t,4,附錄F 模板類 data()方附錄F 模板類 data()方法返回一個指向字符串的指針,該字符串包copy_len個元素,這些元素是strsize()方法返回capacity()方法返回一個不小于 si

34、ze()的值F.2.5 使用右 如第 值:basic_string(basic_string& str) string / C-style string/copyconstructoroneisanstring three(one+two); / move constructor, sum isan basic_string(const basic_string& str, const size()方法返回 str.size()的值capacity()方法返回一個至少等于 size()F.2.6 使用一個字符n個副本的構(gòu)造函 basic_string(size_type n, charT c,

35、 const Allocator& a = str.data() c;size()方法返回capacity()方法返回不小于 size()F.2.7 使用區(qū)間的構(gòu)造函template basic_string(InputIterator begin, InputIterator end,constAllocator&a= charcole40=OldKingColewasamerryoldsoul.; stringtitle(cole+4,cole+8);vector input; char ch;while (cin.get(ch) & ch != n) string str_input(i

36、nput.begin(), 在第一種用法中,InputIterator 的類型為 const char *;在第二種用法中,InputIterator 的類 data()方法返回一個指向字符串的第一個元素的指針,該字符串是通附錄F 模板類size()beginend之間的距離(度量距離時,使用的capacity()方法返回一個不小于 size()的值這個構(gòu)造函數(shù)接受一個 initializer_list參數(shù): basic_string(initializer_list il, const附錄F 模板類size()beginend之間的距離(度量距離時,使用的capacity()方法返回一個不小

37、于 size()的值這個構(gòu)造函數(shù)接受一個 initializer_list參數(shù): basic_string(initializer_list il, const Allocator& a = Allocator();string slow(s, n, a, i, basic_string(il.begin(), il.end(), 表 4種方法可reference const_reference operator(size_typereferenceat(size_typen);const_reference at(size_type n) 第一個 operator ()方法使得能夠使用數(shù)組表

38、示法字符串的元素,可用于檢索或更改值。第二operator方法可用const對象,但只能用于檢索值string coutword0;/displaytheword3=t; /overwritethekwi const ward(garlic);coutward2;/displaythetstring cout =size(),out_of_range 異常類型為 size_type,是無符號的,因的值不能為負(fù);而 operator ()方法不進(jìn)行邊界檢查,因此size(),const版本將返回空值字符的等價物使用 basic_string =0,size_typen=)void resize(

39、size_type 如果nn ,將則截短字符串,如果nsize(),則使用 charT(0)中的字符填充字符串voidresize(size_typen,charT如果 nn ,將out_of_range異常;否則,將字符串長度改為n,如果nsize(),則使用字符 c 填充字符串void reserve(size_type res_arg = 將capaitye_ag。由于這將重新分配字符串,因此以前的引void capacity()的值size()相同,這是 C+11 新增voidclear()刪除字符串中所有的字boolempty()const如果size()=0,則返回 附錄F 模板類

40、pet stringmessage(Maybethedonkeywilllearntosing.); stringpet(message.substr(10,6);附錄F 模板類pet stringmessage(Maybethedonkeywilllearntosing.); stringpet(message.substr(10,6);const charT& front() const; charT& front();const charT& back() const; charT& back(); (string的最后一個素,相當(dāng)operatorsize1)basic_string&

41、operator=(const basic_string& str); basic_string& operator=(const charT* s); basic_string&operator=(charTc);basic_string& operator=(basic_string& str)noexcept; / C+11 basic_string&operator=(initializer_list); /C+11 將一個字符賦給 string 對象;第四個方法使用移動語義,將一個右值 string 對象賦給一個 string 對象string estring pres, veep,

42、 source, join, awkward; pres = name;veep = Road Runner; source = X;join=name+source;/nowwithmovesemawkward = C,l,o,u,s,e,a,u;string 類提供了6 種搜索函數(shù),其中每個函數(shù)都有4 個原F.5.1 find()系在C+11中,find()的原型如下size_type find (constbasic_string& str, =0)constsize_typefind(constcharT*s,=0)size_type find (const charT* s, siz

43、e_type,size_typen)const; size_type find (charT c, size_type=0)constnoexcept; 。string tisafunnystringsize_type loc1 =/setsloc1tosize_typeloc2 =longer.find(shorter, loc1 +1); /sets loc2to if(loc1=)coutNotsize_type loc3 = longer.find(is); /sets loc3 to 附錄F 模板類size_type loc4 = longer.find(funds, 3); /se

44、ts loc4 to size_type loc5 = longer.find(a); /sets loc5 to F.5.2 rfind()系size_type rfind(const basic_string& 附錄F 模板類size_type loc4 = longer.find(funds, 3); /sets loc4 to size_type loc5 = longer.find(a); /sets loc5 to F.5.2 rfind()系size_type rfind(const basic_string& = n) const noexcept; size_typerfin

45、d(constcharT*s,size_type= nsize_type rfind(const charT* s, size_type size_type rfind(charT c, size_type,size_typen)const應(yīng) )。如果沒有找到,該方法將返回 string tisafunnystringsize_type loc1 =/setsloc1tosize_typeloc2 =longer.rfind(shorter, loc1- 1);/ sets loc2 to F.5.3 size_type _of(constbasic_string&str, _of(const

46、charT*s, ,size_typen)_of(constcharT*s,=0)_of(charTc,=0)constsize_typefind_ size_typefind_ size_type 這些方法與對應(yīng) string tisafunnystringsize_typeloc1=longer.find_ size_typeloc2=longer.find_of(shorter);/ setsloc1to _of(fat);/setsloc2to size_type find_last_of (const basic_string& =)constsize_type find_last_

47、of (const charT* s,size_type,size_typen)const; size_typefind_last_of(constcharT*s,size_type= n) const;size_typefind_last_of(charTc,=)conststring tisafunnystringsize_type loc1 =longer.find_last_of(shorter); / setsloc1 to size_type loc2 =/setsloc2to size_type find_ size_type size_typefind_ size_type _

48、not_of(const basic_string& str, = 0) const noexcept;_not_of(constcharT*s,size_typesize_typen)const;_not_of(constcharT*s,=0)_not_of(charT c, =0)const附錄F 模板類string tisafunnystringsize_typeloc1=longer.find_ size_type loc2 =_not_of(shorter); /setsloc1totch);/setsloc2to在longer中附錄F 模板類string tisafunnystri

49、ngsize_typeloc1=longer.find_ size_type loc2 =_not_of(shorter); /setsloc1totch);/setsloc2to在longer中tch中出現(xiàn)的字符F.5.6 find_last_not_of()系find_last_not_of()方法的原型如下size_type find_last_not_of (const basic_string& = n) const noexcept; size_type find_last_not_of (const charT* s, size_typesize_type n) const; s

50、ize_type find_last_not_of (const charT* s,=)size_type find_last_not_of (charT c, =)const應(yīng) string tisafunnystringsize_type loc1 =/setsloc1tosize_type loc2 = longer.find_last_not_of(shorter, 10); / sets loc2 to string 類提供了用于比較 2 個字符串的方法和函數(shù)。下compare(const basic_string& str) const 1,size_typeconst basic

51、_string& str) 1, size_type n1, const basic_string& str,2,size_typen2)compare(const charT* s)1,size_typen1,constcharT*s)const; 1, size_type n1,constcharT*s,size_typen2)提供的順序,第一個字符串位于第二個字符串之前,則第一個方法將返回一個小0的值;如果這兩個字符串相同,則它將返0;如果第一個字符串位于第二個字符串的后面,則它將返回一個大于0的值。如strings2(bell); strings3(cat);a13= a12pare(

52、s3);/a13is下面的示例將字符串 s1 的前 4 個字符同字符串 s2 進(jìn)行比較:stringstring a2pare(0,4,s2);/a2is stringst1(stoutboar); string st2(mad about ewe);a3pare(2,3,st2,6,3);/a3is附錄F 模板類附錄F 模板類每一個運算符都被重載,使之stringstring對象進(jìn)行比較、stringC-風(fēng)格字符串進(jìn)C-風(fēng)格字符串string 對象進(jìn)行比較。它們都是根compare()方法定義的,因此提供string 類提供了多個用于修改字符串的方法,其中絕大多數(shù)都擁有大量的重載版本,因此可

53、用于 F.7.1 用于追加和相加的方可以使用重載的+ =運算符或 append()方法將一個字符串追加到另一個字符串的后面。如果得到的字符串長于最大字符串長度,將 length_error異常。+=運算符string對象、字符串?dāng)?shù)組或單個字符追加到 string 對象的后面:basic_string& operator+=(const basic_string& str); basic_string& operator+=(const charT* s); append()方法也使得能夠?qū)?string 對象、字符串?dāng)?shù)組或單個字符追加到 string 對象加 串中的多少個字符,可以追加字符串的

54、一部分。追加字符的版本使得能夠指定要apedbasic_string& append(const basic_string& 該字符的多少個basic_string&append(constbasic_string&str,size_type size_typen);,template basic_string& append(InputIterator,InputIterator basic_string& append(const charT* basic_string& append(const charT* s, size_type basic_string& append(size_

55、type n, charT c); /appendn copies of void push_back(charT c);stringtest(The);test.append(ory); / test.append(3,!); /appends1copyof符和 string 對象相加。下面是一些例子:string string st3 = st1+ uce; / st3 isreduce stringst4=t+st2;/st4istrain stringst5 =st1+ st2;/st5isF.7.2 其他賦值方一部分或由相同字符組成的字符序列賦給 string 對象。下面是各種 as

56、sign()方法的原型:basic_string& assign(const basic_string& basicstring&assign(basic_string&str)noexcept;/C+11 basic_string& assign(const basic_string& str, size_type basic_string& assign(const charT* s, size_type n); basic_string& assign(const charT* s);附錄F 模板類basic_string& assign(size_type n, charT /assi

57、gnncopiesoftemplateclass basic_string& , InputIterator basic_string& assign(initializer_list); / string stringstuff(set tubsclones test.assign(stuff, 1, 5); et tu test.assign(6, 作為參數(shù)的 assign()方法是 C+11 新增的,它支持移動語義;另一個新增的 assign()附錄F 模板類basic_string& assign(size_type n, charT /assignncopiesoftemplatec

58、lass basic_string& , InputIterator basic_string& assign(initializer_list); / string stringstuff(set tubsclones test.assign(stuff, 1, 5); et tu test.assign(6, 作為參數(shù)的 assign()方法是 C+11 新增的,它支持移動語義;另一個新增的 assign()方接受右initializer_liststring對象 入到 2超過了 basic_string&insert(size_type basic_string& basic_strin

59、g&insert(size_type basic_string& 1, const basic_string& str); 1,constbasic_string&str, 2,size_typen);,constcharT*s,size_type,constcharT*basic_string& ,size_typen,charTiterator insert(const_iterator p, charT iterator insert(const_iterator p, size_type n, charT c); templatevoidinsert(iteratorp,InputIt

60、eratoriterator insert(const_iterator p, initializer_list); / string st3(The st3.insert(4, former st3.insert(st3.size() - 1, waltzed!, basic_string& erase(size_type iterator erase(const_iterator iterator erase(const_iterator void pop_back();=0,size_typen=n ,iterator 的,字符,并返回指向下一個元素的迭代器;如果后面沒有其他元素,則返回

溫馨提示

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

最新文檔

評論

0/150

提交評論