国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

C++ string的深入理解

darkbaby123 / 1993人閱讀

摘要:迭代器返回一個迭代器,該迭代器指向字符串結(jié)束字符的過去部分。不得取消對其的引用。如果字符串對象是限定的,則函數(shù)返回一個迭代器。此值在字符串的成員函數(shù)中用作或參數(shù)的值時,表示直到字符串結(jié)束。

String類介紹
string的文檔介紹

  1. 字符串是表示字符序列的類
  2. 標(biāo)準(zhǔn)的字符串類提供了對此類對象的支持,其接口類似于標(biāo)準(zhǔn)字符容器的接口,但添加了專門用于操作
    單字節(jié)字符字符串的設(shè)計(jì)特性。
  3. string類是使用char(即作為它的字符類型,使用它的默認(rèn)char_traits和分配器類型(關(guān)于模板的更多信
    息,請參閱basic_string)。
  4. string類是basic_string模板類的一個實(shí)例,它使用char來實(shí)例化basic_string模板類,并用char_traits
    和allocator作為basic_string的默認(rèn)參數(shù)(根于更多的模板信息請參考basic_string)。
  5. 注意,這個類獨(dú)立于所使用的編碼來處理字節(jié):如果用來處理多字節(jié)或變長字符(如UTF-8)的序列,這個
    類的所有成員(如長度或大小)以及它的迭代器,將仍然按照字節(jié)(而不是實(shí)際編碼的字符)來操作。
    總結(jié):
    1. string是表示字符串的字符串類
    2. 該類的接口與常規(guī)容器的接口基本相同,再添加了一些專門用來操作string的常規(guī)操作。
      比特科技
    3. string在底層實(shí)際是:basic_string模板類的別名,typedef basic_stringstring;
    4. 不能操作多字節(jié)或者變長字符的序列。在使用string類時,必須包含#include頭文件以及using namespace std;

一、String的構(gòu)造方法
string構(gòu)造方法文檔介紹

這是文檔對string對的構(gòu)造方法地描述,以下是對string構(gòu)造函數(shù)地具體說明。

string() 構(gòu)造空的string類對象,即空字符串
string(const char* s) 用C-string來構(gòu)造string類對象
string(size_t n, char c) string類對象中包含n個字符c
string(const string&s) 拷貝構(gòu)造函數(shù)

void text() {	string str;	string s("123456789");	string ss(8, "a");	string st(s);	cout << str << endl;	cout << s << endl;	cout << ss << endl;	cout << st << endl;}


箭頭標(biāo)出來的是空字符串,s通過拷貝構(gòu)造把值傳給了str,只不過值空字符串。

二、string容量操作介紹

size 返回字符串有效字符長度
length 返回字符串有效字符長度
capacity 返回空間總大小
empty 檢測字符串釋放為空串,是返回true,否則返回false
clear 清空有效字符
reserve 為字符串預(yù)留空間**
resize 將有效字符的個數(shù)該成n個,多出的空間用字符c填充

  1. size()和length():返回string對象的字符個數(shù),他們執(zhí)行效果相同。
  2. capacity():重新分配內(nèi)存之前,string對象能包含的最大字符數(shù)

capacity表示為字符串預(yù)留空間的大小這是表示s1的預(yù)留空間大小為15而有效字符串長度為9.

empty檢測字符串釋放為空串當(dāng)s1不是空串是輸出的是0,當(dāng)執(zhí)行了clear()情況了字符串時empty檢測s1為空串輸出為1。

resize 將s1有效字符的個數(shù)該成10個輸出了size大小為10,size大小表示有效字符串的數(shù)。

size()與length()方法底層實(shí)現(xiàn)原理完全相同,引入size()的原因是為了與其他容器的接口保持一致,一般情況下基本都是用size()。
clear()只是將string中有效字符清空,不改變底層空間大小。
resize(size_t n) 與 resize(size_t n, char c)都是將字符串中有效字符個數(shù)改變到n個,不同的是當(dāng)字 符個數(shù)增多時:resize(n)用0來填充多出的元素空間,resize(size_t
n, char c)用字符c來填充多出的 元素空間。注意:resize在改變元素個數(shù)時,如果是將元素個數(shù)增多,可能會改變底層容量的大小,如果是將元素個數(shù)減少,底層空間總大小不變。
reserve(size_t res_arg=0):為string預(yù)留空間,不改變有效元素個數(shù),當(dāng)reserve的參數(shù)小于string的底層空間總大小時,reserver不會改變?nèi)萘看笮?/p>

三、string類對象的訪問及遍歷操作

operator[] 返回pos位置的字符,const string類對象調(diào)用
begin+ end
begin獲取一個字符的迭代器 + end獲取最后一個字符下一個位置的迭代器
rbegin + rend
begin獲取一個字符的迭代器 + end獲取最后一個字符下一個位置的迭代器
范圍for C++11支持更簡潔的范圍for的新遍歷方式

文檔介紹:

1.operator[]方式
字符串中指定位置的字符。如果字符串對象是const限定的,則函數(shù)返回一個const char&。否則,它將返回一個字符&

通過for循環(huán)方式打印出數(shù)據(jù)這和數(shù)組遍歷打印數(shù)據(jù)差不了多少。
2.迭代器
返回一個迭代器,該迭代器指向字符串結(jié)束字符的過去部分。
結(jié)束字符后面的過去字符是字符串中最后一個字符后面的理論字符。不得取消對其的引用。
由于標(biāo)準(zhǔn)庫函數(shù)使用的范圍不包括其結(jié)束迭代器所指向的元素,因此此函數(shù)通常與string::begin結(jié)合使用,以指定包含字符串中所有字符的范圍。
如果對象是空字符串,則此函數(shù)返回與string::begin相同的值。
一個迭代器,指向字符串的末尾。
如果字符串對象是const限定的,則函數(shù)返回一個const_迭代器。否則,它將返回一個迭代器。
成員類型迭代器和常量迭代器是隨機(jī)訪問迭代器類型(分別指向字符和常量字符)。

void text() {	string s1("123456789");	string sss("123456");	for (int i = 0; i < s1.size(); i++) {		cout << s1[i] << " " ;	}	string::iterator it = s1.begin();	while (it != s1.end()) {		cout << *it << " ";		it++;	}}


3.反向迭代器
就是利用迭代器逆向輸出string中的數(shù)據(jù)

string::reverse_iterator it = s1.rbegin();	while (it != s1.rend()) {		cout << *it << " ";		it++;	}

這不是難實(shí)現(xiàn),利用for循環(huán)也可以逆向打印數(shù)據(jù)。
4.范圍for
C++新標(biāo)準(zhǔn)提供的范圍for語句.這種語句遍歷給定序列中個元素并對序列中每一個值執(zhí)行某種操作,其語法形式是:

for(declaration : expression)
statement

其中,expression 部分是一個對象,用于表示一個序列。declaration 部分負(fù)責(zé)定義一個變量,該變量將用于訪問序列中的基礎(chǔ)元素。每次迭代,declaration部分的變量會被初始化為expression部分的下一個元素值。

此例中通過使用auto關(guān)鍵字讓編譯器來決定變量o的類型,這里o的類型是char.每次迭代,s1的下一個字符被拷貝給o,因此該循環(huán)可以讀作“對于字符串str中的每個字符o,”執(zhí)行某某操作。此例中的某某操作 即輸出一個字符,然后換行。

四、string的修改

push_back 在字符串后尾插字符c
append 在字符串后追加一個字符串
operator+= (重點(diǎn)) 在字符串后追加字符串str
c_str(重點(diǎn)) 返回C格式字符串
find + npos(重點(diǎn)) 從字符串pos位置開始往后找字符c,返回該字符在字符串中的位置
rfind 從字符串pos位置開始往前找字符c,返回該字符在字符串中的位置 substr
在str中從pos位置開始,截取n個字符,然后將其返回


push_back只能插入一個字符,而且不能插入字符串,而append不竟能插入字符,而且能插入字符串。
operator+= 在字符串后追加字符串str,這也是字符串修改中最常用的方法。
find:
find的文檔介紹

第一個匹配的第一個字符的位置。
如果未找到匹配項(xiàng),則函數(shù)返回字符串::npos。
size_ t是無符號整數(shù)類型(與成員類型string::size_t類型相同)。

找到就返回它的位置,找不到返回-1,也有的地方說是npos這里npos意思是一至的。
文檔中是這樣介紹:

npos是一個靜態(tài)成員常量值,對于類型為size_t的元素,其值可能最大。
此值在字符串的成員函數(shù)中用作len(或sublen)參數(shù)的值時,表示“直到字符串結(jié)束”。
作為返回值,它通常用于指示不匹配。
此常量的定義值為-1,因?yàn)閟ize_t是無符號整數(shù)類型,所以它是此類型的最大可能表示值。

substr:

這個例子是把s從第3個字符開始截取到npos也就是字符串末尾。
五、其他方法
operator+盡量少用,因?yàn)閭髦捣祷兀瑢?dǎo)致深拷貝效率低
拼接字符串

把兩個字符串拼接成一個字符串。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/123600.html

相關(guān)文章

  • JavaScript 程序員可以從C++中學(xué)到什么

    摘要:特別是所謂的不需要的引用可能會導(dǎo)致內(nèi)存泄漏,這意味著程序占用的內(nèi)存比實(shí)際需要的多,從而降低了內(nèi)存的效率。但是如果我們能夠意識到內(nèi)存泄漏的風(fēng)險,就可以采取措施將其刪除。意外的使用全局變量是導(dǎo)致內(nèi)存泄漏的一個常見原因。 作者:Bret Cameron翻譯:瘋狂的技術(shù)宅原文:https://medium.com/@bretcamer... 本文首發(fā)微信公眾號:前端先鋒歡迎關(guān)注,每天都給你...

    不知名網(wǎng)友 評論0 收藏0
  • 【修煉內(nèi)功】[JVM] 深入理解JVM之ClassLoader

    摘要:本文已收錄修煉內(nèi)功躍遷之路在誕生之初便提出,各提供商發(fā)布很多不同平臺的虛擬機(jī),這些虛擬機(jī)都可以載入并執(zhí)行同平臺無關(guān)的字節(jié)碼。設(shè)計(jì)者在第一版虛擬機(jī)規(guī)范中便承諾,時至今日,商業(yè)機(jī)構(gòu)和開源機(jī)構(gòu)已在之外發(fā)展出一大批可以在上運(yùn)行的語言,如等。 本文已收錄【修煉內(nèi)功】躍遷之路 Java在誕生之初便提出 Write Once, Run Anywhere,各提供商發(fā)布很多不同平臺的虛擬機(jī),這些虛擬機(jī)...

    荊兆峰 評論0 收藏0
  • 從表到里學(xué)習(xí)JVM實(shí)現(xiàn)

    在社會化分工、軟件行業(yè)細(xì)分專業(yè)化的趨勢下,會真的參與到底層系統(tǒng)實(shí)現(xiàn)的人肯定是越來越少(比例上說)。真的會參與到JVM實(shí)現(xiàn)的人肯定是少數(shù)。 但如果您對JVM是如何實(shí)現(xiàn)的有興趣、充滿好奇,卻苦于沒有足夠系統(tǒng)的知識去深入,那么可以參考RednaxelaFX整理的這個書單。 showImg(http://segmentfault.com/img/bVbGzn); 本豆列的脈絡(luò)是:    1. JV...

    Cristic 評論0 收藏0
  • 系統(tǒng)地學(xué)習(xí)C++

    摘要:本書主要圍繞一系列逐漸復(fù)雜的程序問題,以及用以解決這些問題的語言特性展開講解。你不只學(xué)到的函數(shù)和結(jié)構(gòu),也會學(xué)習(xí)到它們的設(shè)計(jì)目的和基本原理。因此我們把精力集中在最有價值的地方。本書不僅是對模板的權(quán)威解釋,而且本書還深入地介紹了其他一般的思想。 C++ 入門教程(41課時) - 阿里云大學(xué) C+...

    joyqi 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<