STL-string容器

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);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市都毒,隨后出現(xiàn)的幾起案子色罚,更是在濱河造成了極大的恐慌,老刑警劉巖账劲,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戳护,死亡現(xiàn)場離奇詭異,居然都是意外死亡瀑焦,警方通過查閱死者的電腦和手機(jī)腌且,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榛瓮,“玉大人切蟋,你說我怎么就攤上這事∮苈” “怎么了柄粹?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長匆绣。 經(jīng)常有香客問我驻右,道長,這世上最難降的妖魔是什么崎淳? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任堪夭,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘森爽。我一直安慰自己恨豁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布爬迟。 她就那樣靜靜地躺著橘蜜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪付呕。 梳的紋絲不亂的頭發(fā)上计福,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音徽职,去河邊找鬼象颖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛姆钉,可吹牛的內(nèi)容都是我干的说订。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼潮瓶,長吁一口氣:“原來是場噩夢啊……” “哼克蚂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起筋讨,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摸恍,沒想到半個(gè)月后悉罕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡立镶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年壁袄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媚媒。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嗜逻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缭召,到底是詐尸還是另有隱情栈顷,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布嵌巷,位于F島的核電站萄凤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏搪哪。R本人自食惡果不足惜靡努,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惑朦,春花似錦兽泄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至栅屏,卻和暖如春飘千,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背栈雳。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工护奈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哥纫。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓霉旗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蛀骇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厌秒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348