一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

STL[12]string使用總結(jié)

 quasiceo 2012-12-12

STL[12]string使用總結(jié)

業(yè)余時(shí)間研究了GCC4.1.2和SGI-STL源代碼,之后就打算對(duì)每種容器都做個(gè)小結(jié),也算是個(gè)備忘。講實(shí)現(xiàn)原理是人家侯捷老師的活,我只羅列容器的函數(shù)和編程注意事項(xiàng)。本篇總結(jié)STL-STRING,總結(jié)過(guò)程中寫(xiě)了個(gè)測(cè)試程序,用來(lái)驗(yàn)證這些函數(shù)在GCC4.1.2和VC++6.0編譯器上的可行性,同時(shí)模擬錯(cuò)誤的參數(shù)傳遞,盡可能暴漏出編程陷阱,讓您少走彎路。這份文檔只是一個(gè)索引,如果想要熟練的使用STL-STRING,必須在實(shí)踐中不斷的摸索和積累。

我將這些函數(shù)粗略的分為如下幾個(gè)類(lèi)別,點(diǎn)擊直接查看:
std::string -- 1 -- 內(nèi)部類(lèi)型定義
std::string -- 2 -- 構(gòu)造函數(shù)
std::string -- 3 -- 字符&&字符串操作函數(shù)
std::string -- 4 -- 比較函數(shù)
std::string -- 5 -- 查找函數(shù)
std::string -- 6 -- 替換函數(shù)
std::string -- 7 -- 賦值函數(shù)
std::string -- 8 -- 連接函數(shù)
std::string -- 9 -- 插入函數(shù)

typedef traits traits_type;
typedef typename traits::char_type value_type;
typedef size_t size_type;
typedef Allocator allocator_type;
typedef ptrdiff_t difference_type;
typedef Allocator allocator_type;
typedef Allocator allocator_type;
typedef Allocator allocator_type;
string()

構(gòu)造空的string,長(zhǎng)度為0,不含任何內(nèi)容
string(const string& str)

拷貝構(gòu)造函數(shù),使用str將其初始化
string(const string& str, size_type pos, size_type n = npos)

構(gòu)造string,并使用str從pos開(kāi)始的n個(gè)字符初始化
string(const char* s, size_type n)

構(gòu)造string,使用字符串s的前n個(gè)字符初始化
string(const char *s)

構(gòu)造string,使用以'\0'結(jié)尾的字符串s初始化。
string(int n, char c)

構(gòu)造string,使用n個(gè)字符c初始化
string(InputIterator begin, InputIterator end)

構(gòu)造string,使用迭代器指定的字符串初始化


除了上述函數(shù),也支持復(fù)制運(yùn)算符構(gòu)造變量,例如:std::string s = "abcde"。
當(dāng)構(gòu)造的string太長(zhǎng)而無(wú)法表達(dá)時(shí),構(gòu)造函數(shù)拋出length_error異常。

char operator[] (size_type pos) const

返回pos位置的字符
char & operator[] (size_type pos)

返回pos位置的字符引用
char & at (size_type pos)

返回pos位置的字符引用
const char & at (size_type pos) const

返回pos位置的字符const引用
const char* data () const

返回一個(gè)以非NULL終止的字符串
const charT* c_str () const

返回一個(gè)以NULL終止的字符串
size_type copy (char* s, size_type n, size_type pos = 0) const

將當(dāng)前字符串pos位置開(kāi)始的n個(gè)字符拷貝到s字符串中,返回實(shí)際拷貝的字符數(shù)
int compare(const string & s) const

將當(dāng)前string以字典次序與s比較(0:相等;>0:大于s;<0:小于s)
int compare(size_type pos, size_type n, const string& s) const

將當(dāng)前string從pos開(kāi)始的n個(gè)字符與s比較
int compare(size_type pos, size_type n, const string& s, size_type pos1, size_type n1) const

將當(dāng)前string的子串(從pos開(kāi)始的n個(gè)字符)與s的子串(從pos1開(kāi)始的n1個(gè)字符)比較
int compare(const char * s) const

將當(dāng)前string與null-terminated字符串s比較
int compare(size_type pos, size_type n, const char * s, size_type len = npos) const

將當(dāng)前string的子串(從pos開(kāi)始的n個(gè)字符)與字符串s的前l(fā)en個(gè)字符比較
bool operator == (const string & lhs, const string & rhs)
bool operator == (const char* lhs, const string & rhs)
bool operator == (const string & lhs, const char * rhs)

判斷"=="關(guān)系是否成立,返回boolean值(全局定義函數(shù),非成員函數(shù))
bool operator != (const string & lhs, const string & rhs)
bool operator != (const char * lhs, const string & rhs)
bool operator != (const string & lhs, const char* rhs)

判斷"!="關(guān)系是否成立(全局定義函數(shù),非成員函數(shù))
bool operator < (const string & lhs, const string & rhs)
bool operator < (const char* lhs, const string & rhs)
bool operator < (const string & lhs, const char* rhs)

判斷"<"關(guān)系是否成立(全局定義函數(shù),非成員函數(shù))
bool operator > (const string & lhs, const string & rhs)
bool operator > (const char* lhs, const string & rhs)
bool operator > (const string & lhs, const char * rhs)

判斷">"關(guān)系是否成立(全局定義函數(shù),非成員函數(shù))
bool operator <= (const string & lhs, const string & rhs)
bool operator <= (const char * lhs, const string & rhs)
bool operator <= (const string & lhs, const char * rhs)

判斷"<="關(guān)系是否成立(全局定義函數(shù),非成員函數(shù))
bool operator >= (const string & lhs, const string & rhs)
bool operator >= (const char * lhs, const string & rhs)
bool operator >= (const string & lhs, const char * rhs)

判斷">="關(guān)系是否成立(全局定義函數(shù),非成員函數(shù))
size_type find(const string& str, size_type pos = 0) const

當(dāng)前string從pos開(kāi)始向后查找str第一次出現(xiàn)的位置。
Searches for s as a substring of *this, beginning at character pos of *this.
size_type find(const char* s, size_type pos, size_type n) const

當(dāng)前string從pos開(kāi)始向后查找“s子串內(nèi)前n個(gè)字符組成字符串”第一次出現(xiàn)的位置。
Searches for the first n characters of s as a substring of *this, beginning at character pos of *this.
size_type find(const char* s, size_type pos = 0) const

當(dāng)前string從pos開(kāi)始向后查找以'\0'結(jié)尾子串s第一次出現(xiàn)的位置
Searches for a null-terminated character array as a substring of *this, beginning at character pos of *this.
size_type find(char c, size_type pos = 0) const

當(dāng)前string從pos開(kāi)始向后查找字符c第一次出現(xiàn)的位置
Searches for the character c, beginning at character position pos.
size_type rfind(const string & str, size_type pos = npos) const

當(dāng)前string從pos開(kāi)始向前查找str第一次出現(xiàn)的位置
Searches backward for s as a substring of *this, beginning at character position min(pos, size())
size_type rfind(const char* s, size_type pos, size_type n) const

當(dāng)前string從pos開(kāi)始向前查找“s子串內(nèi)前n個(gè)字符組成字符串”第一次出現(xiàn)的位置
Searches backward for the first n characters of s as a substring of *this, beginning at character position min(pos, size())
size_type rfind(const charT* s, size_type pos = npos) const

當(dāng)前string從pos開(kāi)始向前查找以'\0'結(jié)尾子串s第一次出現(xiàn)的位置
Searches backward for a null-terminated character array as a substring of *this, beginning at character min(pos, size())
size_type rfind(charT c, size_type pos = npos) const

當(dāng)前string從pos開(kāi)始向前查找字符c第一次出現(xiàn)的位置
Searches backward for the character c, beginning at character position min(pos, size()).
size_type find_first_of(const string & s, size_type pos = 0) const

當(dāng)前string從pos開(kāi)始向前查找“s中任意一個(gè)字符”第一次出現(xiàn)的位置
Searches within *this, beginning at pos, for the first character that is equal to any character within s.
注意:如果pos超過(guò)當(dāng)前string的長(zhǎng)度,返回std::string::npos
size_type find_first_of(const char* s, size_type pos, size_type n) const

當(dāng)前string從pos開(kāi)始向前查找“s前n個(gè)字符中任意一個(gè)字符”第一次出現(xiàn)的位置
Searches within *this, beginning at pos, for the first character that is equal to any character within the range [s, s+n).
注意:pos越界直接返回std::string::npos;n越界,會(huì)導(dǎo)致越界訪(fǎng)問(wèn)而coredump。
size_type find_first_of(const char* s, size_type pos = 0) const

當(dāng)前string從pos開(kāi)始向前查找“以null結(jié)尾字符串s中任意一個(gè)字符”第一次出現(xiàn)的位置
Equivalent to find_first_of(s, pos, traits::length(s)).
注意:如果pos超過(guò)當(dāng)前string的長(zhǎng)度,返回std::string::npos
size_type find_first_of(char c, size_type pos = 0) const

當(dāng)前string從pos開(kāi)始向前查找字符c第一次出現(xiàn)的位置
Equivalent to find(c, pos).
size_type find_first_not_of(const string& s, size_type pos = 0) const

當(dāng)前string從pos開(kāi)始向前查找第一個(gè)不在s中的任意字符位置
Searches within *this, beginning at pos, for the first character that is not equal to any character within s.
size_type find_first_not_of(const char* s, size_type pos, size_type n) const

當(dāng)前string從pos開(kāi)始正向(forward)查找第一個(gè)不在“s前n個(gè)字符”中的任意字符位置
Searches within *this, beginning at pos, for the first character that is not equal to any character within the range [s, s+n).
size_type find_first_not_of(const char* s, size_type pos = 0) const

當(dāng)前string從pos開(kāi)始正向(forward)查找不屬于“以null結(jié)尾字符串s”的第一個(gè)字符位置
Searches within *this, beginning at pos, for the first character that is not equal to any character within s.
size_type find_first_not_of(char c, size_type pos = 0) const

當(dāng)前string從pos開(kāi)始正向(forward)查找不等于c的第一個(gè)字符位置
Searches within *this, beginning at pos, for the first character that is not equal to c.
size_type find_last_of(const string& s, size_type pos = npos) const

當(dāng)前string從pos開(kāi)始逆向(backward)查找“s中任意字符”第一次出現(xiàn)的位置
Searches backward within *this, beginning at min(pos, size()), for the first character that is equal to any character within s.
size_type find_last_of(const char * s, size_type pos, size_type n) const

當(dāng)前string從pos開(kāi)始逆向(backward)查找“s前n個(gè)字符之中任意字符”第一次出現(xiàn)的位置
Searches backward within *this, beginning at min(pos, size()), for the first character that is equal to any character within the first n characters of s.
size_type find_last_of(const char * s, size_type pos = npos) const

當(dāng)前string從pos開(kāi)始逆向(backward)查找屬于“以null結(jié)尾字符串s”的第一個(gè)字符位置
Searches backward *this, beginning at min(pos, size()), for the first character that is equal to any character within s.
size_type find_last_of(char c, size_type pos = npos) const

當(dāng)前string從pos開(kāi)始逆向(backward)查找字符c第一次出現(xiàn)的位置
Searches backward *this, beginning at min(pos, size()), for the first character that is equal to c.
size_type find_last_not_of(const string& s, size_type pos = npos) const

當(dāng)前string從pos開(kāi)始逆向(forward)查找不在s中的任意字符第一次出現(xiàn)的位置
Searches backward within *this, beginning at min(pos, size()), for the first character that is not equal to any character within s.
size_type find_last_not_of(const char* s, size_type pos, size_type n) const

當(dāng)前string從pos開(kāi)始逆向(backward)查找不在“s前n個(gè)字符”中的任意字符第一次出現(xiàn)的位置
Searches backward within *this, beginning at min(pos, size()), for the first character that is not equal to any character within the first n characters of s.
size_type find_last_not_of(const char* s, size_type pos = npos) const

當(dāng)前string從pos開(kāi)始逆向(backward)查找不屬于“以null結(jié)尾字符串s”的任意字符第一次出現(xiàn)的位置
Searches backward *this, beginning at min(pos, size()), for the first character that is not equal to any character within s.
size_type find_last_not_of(char c, size_type pos = npos) const

當(dāng)前string從pos開(kāi)始逆向(backward)查找不等于c的任意字符第一次出現(xiàn)的位置
Searches backward *this, beginning at min(pos, size()), for the first character that is not equal to c.
std::string & replace(size_type pos1, size_type n1, const std::string & str, size_type pos2 = 0, size_type n2 = npos)

該函數(shù)的作用:使用str字符串從位置pos2開(kāi)始的n2個(gè)字符,替換當(dāng)前字符串從pos1位置開(kāi)始處的n1個(gè)字符。
可以這樣理解:該函數(shù)將當(dāng)前字符串從pos1開(kāi)始的n1個(gè)字符全部刪除,然后再用str整個(gè)字符串或者str從pos2開(kāi)始的n2個(gè)字符,從pos1位置開(kāi)始填入到當(dāng)前字符串中。

提醒:如果n1或者n2的數(shù)值超出了對(duì)應(yīng)字符串的長(zhǎng)度,以實(shí)際長(zhǎng)度為準(zhǔn),不會(huì)出現(xiàn)訪(fǎng)問(wèn)越界的情況。

注意:
a、如果pos1指定的位置超出當(dāng)前字符串的范圍,拋出std::out_of_range異常,不捕捉將導(dǎo)致coredump。
b、如果pos2指定的位置超出替換字符串str的范圍,拋出std::out_of_range異常,不捕捉將導(dǎo)致coredump。

std::string& replace(size_type pos, size_type n1, const char * s, size_type n2)

該函數(shù)的作用:使用字符串s的前n2個(gè)字符,替換當(dāng)前字符串從pos位置開(kāi)始處的n1個(gè)字符。
可以這樣理解:函數(shù)將當(dāng)前字符串從pos開(kāi)始的n1個(gè)字符全部刪除,然后再用字符串s的前n2個(gè)字符填入到當(dāng)前字符串中。類(lèi)似于函數(shù)1的pos2等于0,必須指定n2的這種情況,但也有一點(diǎn)的差別,下面會(huì)注意里描述這種差別。
注意:
a、如果pos指定的位置超出當(dāng)前字符串的范圍,拋出std::out_of_range異常,不捕捉將導(dǎo)致coredump。
b、該函數(shù)不會(huì)判斷字符串s和n2的大小關(guān)系,它嚴(yán)格地從s起始處拷貝n2個(gè)字符到指定位置。如果n2表示的長(zhǎng)度超出了s的范圍,它會(huì)讀取s后面的內(nèi)存空間,有可能會(huì)因?yàn)閮?nèi)存訪(fǎng)問(wèn)越界而coredump。但函數(shù)1的n2可以超出范圍,它以實(shí)際長(zhǎng)度為準(zhǔn)。
std::string& replace(size_type pos, size_type n1, const char* s)

該函數(shù)的作用:使用以'\0'為結(jié)尾的字符串s,替換當(dāng)前字符串從pos位置開(kāi)始處的n1個(gè)字符。
可以這樣理解:函數(shù)將當(dāng)前字符串從pos開(kāi)始的n1個(gè)字符全部刪除,然后再用字符串s從開(kāi)始到以'\0'結(jié)束的所有字符,從pos位置開(kāi)始填入到當(dāng)前字符串中。

注意:如果pos指定的位置超出當(dāng)前字符串的范圍,拋出std::out_of_range異常,不捕捉將導(dǎo)致coredump。

std::string& replace(size_type pos, size_type n1, size_type n2, char c)

該函數(shù)的作用:使用n2個(gè)c表示的字符,替換當(dāng)前字符串從pos位置開(kāi)始處的n1個(gè)字符。
可以這么理解:函數(shù)將當(dāng)前字符串從pos開(kāi)始的n1個(gè)字符全部刪除,然后再用n2個(gè)c字符,從pos位置開(kāi)始填入到當(dāng)前字符串中。

注意:如果pos指定的位置超出當(dāng)前字符串的范圍,拋出std::out_of_range異常,不捕捉將導(dǎo)致coredump。

std::string& replace(iterator i1, iterator i2, const std::string& str)

該函數(shù)的作用:使用字符串str,替換當(dāng)前字符串[i1,i2)之間的字符。

std::string& replace(iterator i1, iterator i2, const char* s, size_type n)

該函數(shù)的作用:使用字符串s的前n個(gè)字符,替換當(dāng)前字符串[i1,i2)之間的字符。

std::string& replace(iterator i1, iterator i2, const char* s)

該函數(shù)的作用:使用以'\0'結(jié)尾的字符串s,替換當(dāng)前字符串[i1,i2)之間的字符。

std::string& replace(iterator i1, iterator i2, size_type n, char c)

該函數(shù)的作用:使用n個(gè)c表示的字符,替換當(dāng)前字符串[i1,i2)之間的字符。

string &operator=(const string &s)

將當(dāng)前string賦值為s(成員函數(shù))
The assignment operator
string& operator=(const char * s)

將當(dāng)前string賦值為“以null結(jié)尾的字符串s”
Assign a null-terminated character array to a string.
string& operator=(char c)

將當(dāng)前string賦值為“字符c”
Assign a single character to a string.
string& assign(const string& s)

將當(dāng)前string賦值為s
Synonym for operator=
string & assign(const string & s, size_type pos, size_type n)

將當(dāng)前string賦值為“s從pos開(kāi)始的n個(gè)字符”
Assigns a substring of s to *this
string & assign(const char * s, size_type n)

將當(dāng)前string賦值為“s的前n個(gè)字符”
Assigns the first n characters of s to *this.
string& assign(const char* s)

將當(dāng)前string賦值為“以null結(jié)尾的字符串s”
Assigns a null-terminated array of characters to *this.
string & assign(size_type n, char c)

將當(dāng)前string賦值為“n個(gè)字符c”
Erases the existing characters and replaces them by n copies of c.
template <class InputIterator>
basic_string& assign(InputIterator first, InputIterator last)


將當(dāng)前string賦值為“迭代器[first,last)之間的字符”
Erases the existing characters and replaces them by [first, last)
string &operator += (const string &s)

將string s連接到當(dāng)前string尾部
string & operator += (const char * s)

將以null結(jié)尾的字符串s連接到當(dāng)前string的尾部
string & operator += (char c)

將字符c連接到當(dāng)前string的尾部
string & append(const string & s)

將string s連接到當(dāng)前string的尾部
string & append(const string & s, size_type pos, size_type n)

將字符串s從pos開(kāi)始的n個(gè)字符連接到當(dāng)前string的尾部
string & append(const char * s)

將以null結(jié)尾的字符串s連接到當(dāng)前string的尾部
string & append(const char * s, size_type n)

將字符串s的前n個(gè)字符連接到當(dāng)前string的尾部
string & append(size_type n, char c)

將n個(gè)字符c連接到當(dāng)前string的尾部
template <class InputIterator>
string& append(InputIterator first, InputIterator last)


將迭代器[first, last)表示的字符連接到當(dāng)前string的尾部
string & insert(size_type pos, const string & s)

在當(dāng)前string的pos位置之前插入字符串s
string & insert(size_type pos, const string & s, size_type pos1, size_type n)

在當(dāng)前string的pos位置之前插入“字符串s從pos1位置開(kāi)始的n個(gè)字符”
string & insert(size_type pos, const char* s)

在當(dāng)前string的pos位置之前插入“以null結(jié)尾的字符串s”
string & insert(size_type pos, const char * s, size_type n)

在當(dāng)前string的pos位置之前插入“字符串s的前n個(gè)字符”
string & insert(size_type pos, size_type n, char c)

在當(dāng)前string的pos位置之前插入“n個(gè)字符c”
string::iterator insert(string::iterator pos, char c)

在當(dāng)前string的pos位置之前插入“一個(gè)字符c”
void insert(string::iterator pos, size_type n, char c)

在當(dāng)前string的pos位置之前插入“n個(gè)字符c”
template <class InputIterator >
void insert(string::iterator pos, InputIterator first, InputIterator last)


在當(dāng)前string的pos位置之前插入“迭代器[first, last)表示的所有字符”
0
0
(請(qǐng)您對(duì)文章做出評(píng)價(jià))
博主上一篇:STL容器[11]
博主下一篇:STL容器[13]map使用總結(jié)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    国产一区二区不卡在线视频| 少妇被粗大进猛进出处故事| 国产免费一区二区不卡| 精品人妻av区波多野结依| 国产精品欧美一区二区三区不卡 | 久久大香蕉一区二区三区| 日本欧美一区二区三区就| 成年午夜在线免费视频| 亚洲色图欧美另类人妻| 欧美一区二区三区在线播放| 欧美偷拍一区二区三区四区| 国产又粗又猛又大爽又黄| 亚洲欧美日韩色图七区| 国产精品偷拍视频一区| 中文字幕有码视频熟女| 千仞雪下面好爽好紧好湿全文| 我想看亚洲一级黄色录像| 少妇熟女亚洲色图av天堂| 日韩色婷婷综合在线观看| 国产亚洲欧美另类久久久| 极品少妇嫩草视频在线观看| 国产精品美女午夜福利| 国产人妻精品区一区二区三区 | 中文字幕在线五月婷婷| 东京热一二三区在线免| 国产成人亚洲综合色就色| 欧美一区二区三区十区| 人妻乱近亲奸中文字幕| 日本高清视频在线播放| 激情中文字幕在线观看| 美女被后入福利在线观看| 日本免费一本一二区三区| 美女被啪的视频在线观看| 国产不卡在线免费观看视频| 欧美区一区二在线播放| 日本午夜一本久久久综合| 98精品永久免费视频| 国内精品一区二区欧美| 国产成人亚洲精品青草天美| 欧美日韩亚洲国产综合网| 亚洲欧美天堂精品在线|