1.string容器
? C風(fēng)格字符串(以空字符結(jié)尾的字符數(shù)組)太過復(fù)雜難于掌握渠鸽,不適合大程序的開發(fā)锯厢,所以C++標(biāo)準(zhǔn)庫定義了一種string類枯冈,定義在頭文件<string>茵瀑。
String和c風(fēng)格字符串對(duì)比:
- Char是一個(gè)指針,String是一個(gè)類
? string封裝了char贮乳,管理這個(gè)字符串忧换,是一個(gè)char*型的容器。 - String封裝了很多實(shí)用的成員方法
? 查找find向拆,拷貝copy亚茬,刪除delete 替換replace,插入insert - 不用考慮內(nèi)存釋放和越界
? string管理char*所分配的內(nèi)存浓恳。每一次string的復(fù)制刹缝,取值都由string類負(fù)責(zé)維護(hù),不用擔(dān)心復(fù)制越界和取值越界等颈将。
2.string容器常用操作
- string 構(gòu)造函數(shù)
string();//創(chuàng)建一個(gè)空的字符串 例如: string str;
string(const string& str);//使用一個(gè)string對(duì)象初始化另一個(gè)string對(duì)象
string(const char* s);//使用字符串s初始化
string(int n, char c);//使用n個(gè)字符c初始化
- string基本賦值操作
string& operator=(const char* s);//char*類型字符串 賦值給當(dāng)前的字符串
string& operator=(const string &s);//把字符串s賦給當(dāng)前的字符串
string& operator=(char c);//字符賦值給當(dāng)前的字符串
string& assign(const char *s);//把字符串s賦給當(dāng)前的字符串
string& assign(const char *s, int n);//把字符串s的前n個(gè)字符賦給當(dāng)前的字符串
string& assign(const string &s);//把字符串s賦給當(dāng)前字符串
string& assign(int n, char c);//用n個(gè)字符c賦給當(dāng)前字符串
string& assign(const string &s, int start, int n);//將s從start開始n個(gè)字符賦值給字符串
- string存取字符操作
char& operator[](int n);//通過[]方式取字符
char& at(int n);//通過at方法獲取字符
- string拼接操作
string& operator+=(const string& str);//重載+=操作符
string& operator+=(const char* str);//重載+=操作符
string& operator+=(const char c);//重載+=操作符
string& append(const char *s);//把字符串s連接到當(dāng)前字符串結(jié)尾
string& append(const char *s, int n);//把字符串s的前n個(gè)字符連接到當(dāng)前字符串結(jié)尾
string& append(const string &s);//同operator+=()
string& append(const string &s, int pos, int n);//把字符串s中從pos開始的n個(gè)字符連接到當(dāng)前字符串結(jié)尾
string& append(int n, char c);//在當(dāng)前字符串結(jié)尾添加n個(gè)字符c
- string查找和替換
int find(const string& str, int pos = 0) const; //查找str第一次出現(xiàn)位置,從pos開始查找
int find(const char* s, int pos = 0) const; //查找s第一次出現(xiàn)位置,從pos開始查找
int find(const char* s, int pos, int n) const; //從pos位置查找s的前n個(gè)字符第一次位置
int find(const char c, int pos = 0) const; //查找字符c第一次出現(xiàn)位置
int rfind(const string& str, int pos = npos) const;//查找str最后一次位置,從pos開始查找
int rfind(const char* s, int pos = npos) const;//查找s最后一次出現(xiàn)位置,從pos開始查找
int rfind(const char* s, int pos, int n) const;//從pos查找s的前n個(gè)字符最后一次位置
int rfind(const char c, int pos = 0) const; //查找字符c最后一次出現(xiàn)位置
string& replace(int pos, int n, const string& str); //替換從pos開始n個(gè)字符為字符串str
string& replace(int pos, int n, const char* s); //替換從pos開始的n個(gè)字符為字符串s
- string比較操作
/*
compare函數(shù)在>時(shí)返回 1梢夯,<時(shí)返回 -1,==時(shí)返回 0晴圾。
比較區(qū)分大小寫颂砸,比較時(shí)參考字典順序,排越前面的越小死姚。
大寫的A比小寫的a小人乓。
*/
int compare(const string &s) const;//與字符串s比較
int compare(const char *s) const;//與字符串s比較
- string子串
string substr(int pos = 0, int n = npos) const;//返回由pos開始的n個(gè)字符組成的字符串
- string插入和刪除操作
string& insert(int pos, const char* s); //插入字符串
string& insert(int pos, const string& str); //插入字符串
string& insert(int pos, int n, char c);//在指定位置插入n個(gè)字符c
string& erase(int pos, int n = npos);//刪除從Pos開始的n個(gè)字符
- string和c-style字符串轉(zhuǎn)換
//string 轉(zhuǎn) char*
string str = "itcast";
const char* cstr = str.c_str();
//char* 轉(zhuǎn) string
char* s = "itcast";
string str(s);