c++複習要點總結z之十二——STL string

來源:互聯網
上載者:User

1String概念

² string是STL的字串類型,通常用來表示字串。而在使用string之前,字串通常是用char*表示的。string與char*都可以用來表示字串,那麼二者有什麼區別呢。

string和char*的比較

² string是一個類, char*是一個指向字元的指標。

string封裝了char*,管理這個字串,是一個char*型的容器。

² string不用考慮記憶體釋放和越界。

string管理char*所分配的記憶體。每一次string的複製,取值都由string類負責維護,不用擔心複製越界和取值越界等。

² string提供了一系列的字串操作函數(這個等下會詳講)

尋找find,拷貝copy,刪除erase,替換replace,插入insert

2string的建構函式

² 預設建構函式:

string(); //構造一個空的字串string s1。

² 拷貝建構函式:

string(const string &str); //構造一個與str一樣的string。如strings1(s2)。

² 帶參數的建構函式

string(const char *s); //用字串s初始化

string(int n,char c); //用n個字元c初始化

3string的存取字元操作

² string類的字元操作:

const char &operator[] (int n) const;const char &at(int n) const;char &operator[] (int n);char &at(int n);

² operator[]和at()均返回當前字串中第n個字元,但二者是有區別的。

主要區別在於at()在越界時會拋出異常,[]在剛好越界時會返回(char)0,再繼續越界時,編譯器直接出錯。如果你的程式希望可以通過try,catch捕獲異常,建議採用at()。

4從string取得const char*的操作

² const char *c_str() const; //返回一個以'\0'結尾的字串的首地址

5把string拷貝到char*指向的記憶體空間的操作

² int copy(char *s, int n, int pos=0) const;

把當前串中以pos開始的n個字元拷貝到以s為起始位置的字元數組中,返回實際拷貝的數目。注意要保證s所指向的空間足夠大以容納當前字串,不然會越界。

6string的長度

int length() const; //返回當前字串的長度。長度不包括字串結尾的'\0'。

bool empty() const; //當前字串是否為空白

7string的賦值

string &operator=(const string&s);//把字串s賦給當前的字串string &assign(const char *s); //把字串s賦給當前的字串string &assign(const char *s, int n);//把字串s的前n個字元賦給當前的字串string &assign(const string&s); //把字串s賦給當前字串string &assign(int n,char c); //用n個字元c賦給當前字串string &assign(const string &s,intstart, int n); //把字串s中從start開始的n個字元賦給當前字串

8string字串串連

string &operator+=(const string&s); //把字串s串連到當前字串結尾string &operator+=(const char *s);//把字串s串連到當前字串結尾string &append(const char *s); //把字串s串連到當前字串結尾string &append(const char *s,intn); //把字串s的前n個字元串連到當前字串結尾string &append(const string&s); //同operator+=()string &append(const string &s,intpos, int n);//把字串s中從pos開始的n個字元串連到當前字串結尾string &append(int n, char c); //在當前字串結尾添加n個字元c

9string的比較

int compare(const string &s)const; //與字串s比較int compare(const char *s) const; //與字串s比較compare函數在>時返回 1,<時返回 -1,==時返回 0。比較區分大小寫,比較時參考字典順序,排越前面的越小。大寫的A比小寫a小。

10string的子串

string substr(int pos=0, int n=npos)const; //返回由pos開始的n個字元組成的子字串

11string的尋找和 替換

尋找

int find(char c,int pos=0) const; //從pos開始尋找字元c在當前字串的位置 int find(const char *s, int pos=0)const; //從pos開始尋找字串s在當前字串的位置int find(const string &s, int pos=0)const; //從pos開始尋找字串s在當前字串中的位置find函數如果尋找不到,就返回-1int rfind(char c, int pos=npos) const; //從pos開始從後向前尋找字元c在當前字串中的位置 int rfind(const char *s, int pos=npos)const;int rfind(const string &s, intpos=npos) const;//rfind是反向尋找的意思,如果尋找不到, 返回-1



替換

string &replace(int pos, int n, constchar *s);//刪除從pos開始的n個字元,然後在pos處插入串sstring &replace(int pos, int n, conststring &s); //刪除從pos開始的n個字元,然後在pos處插入串svoid swap(string &s2); //交換當前字串與s2的值//4 字串的尋找和替換void main25(){strings1 = "wbm hello wbm 111 wbm 222 wbm 333";size_tindex = s1.find("wbm", 0);cout<< "index: " << index; //求itcast出現的次數size_toffindex = s1.find("wbm", 0);while(offindex != string::npos){cout<< "在下標index: " << offindex << "找到wbm\n";offindex= offindex + 1;offindex= s1.find("wbm", offindex);}//替換 strings2 = "wbm hello wbm 111 wbm 222 wbm 333";s2.replace(0,3, "wbm");cout<< s2 << endl;//求itcast出現的次數offindex= s2.find("wbm", 0);while(offindex != string::npos){cout<< "在下標index: " << offindex << "找到wbm\n";s2.replace(offindex,3, "WBM");offindex= offindex + 1;offindex= s1.find("wbm", offindex);}cout<< "替換以後的s2:" << s2 << endl; }

12String的區間刪除和插入

string &insert(int pos, const char *s);string &insert(int pos, const string&s);//前兩個函數在pos位置插入字串sstring &insert(int pos, int n, charc); //在pos位置 插入n個字元cstring &erase(int pos=0, intn=npos); //刪除pos開始的n個字元,返回修改後的字串

13string演算法相關

void main27(){strings2 = "AAAbbb";transform(s2.begin(),s2.end(), s2.begin(), toupper);cout<< s2 << endl;strings3 = "AAAbbb";transform(s3.begin(),s3.end(), s3.begin(), tolower);cout<< s3 << endl;}

以上就是c++複習要點總結z之十二——STL string的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.