STL容器操作 string詳解

2021-09-20 15:34:14 字數 3264 閱讀 6386

1、string概念

string和char*的比較

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

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

查詢find,拷貝copy,刪除erase,替換replace,插入insert

2、string的建構函式

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

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

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

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

3string的訪問字元操作

const char &operator (int n) const;

const char &at(int n) const;

char &operator (int n);

char &at(int n);

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

4、從string取得const char*的操作

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

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

6、string的長度

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

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

7、string的賦值

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,int start, int n);  //把字串s中從start開始的n個字元賦給當前字串

8、string字串連線

string &operator+=(const string &s);  //把字串s連線到當前字串結尾

string &operator+=(const char *s);//把字串s連線到當前字串結尾

9、string的比較

int compare(const string &s) const;  //與字串s比較

int compare(const char *s) const;   //與字串s比較

compare函式在》時返回 1,《時返回 -1,==時返回 0。比較區分大小寫,比較時參考字典順序,排越前面的越小。大寫的a比小寫的a小。

10、string的子串

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

11、string的查詢 和 替換

查詢

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函式如果查詢不到,就返回-1

int rfind(char c, int pos=npos) const;   //從pos開始從後向前查詢字元c在當前字串中的位置

int rfind(const char *s, int pos=npos) const;

int rfind(const string &s, int pos=npos) const;

//rfind是反向查詢的意思,如果查詢不到, 返回-1

替換string &replace(int pos, int n, const char *s);//刪除從pos開始的n個字元,然後在pos處插入串s

string &replace(int pos, int n, const string &s);  //刪除從pos開始的n個字元,然後在pos處插入串s

void swap(string &s2);    //交換當前字串與s2的值

//4

字串的查詢和替換

void main25()

//替換

string s2 = "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 << "替換以後的s2:" << s2 << endl;

}

12、string的區間刪除和插入

string &insert(int pos, const char *s);

string &insert(int pos, const string &s);

//前兩個函式在pos位置插入字串s

string &insert(int pos, int n, char c);  //在pos位置 插入n個字元c

string &erase(int pos=0, int n=npos);  //刪除pos開始的n個字元,返回修改後的字串

13、string演算法相關

void main27()

參考:傳智掃地僧講義

STL容器操作 stack詳解

1 stack簡介 2 stack物件的預設構造 stack採用模板類實現,stack物件的預設構造形式 stack stkt stack stkint 乙個存放int的stack容器。stack stkfloat 乙個存放float的stack容器。stack stkstring 乙個存放stri...

STL容器詳解

3.1.stl容器 1 序列式容器 sequence containers 每個元素都有固定位置 取決於插入時機和地點,和元素值無關,vector deque list vectors 將元素置於乙個動態陣列中加以管理,可以隨機訪問元素 用索引直接訪問 陣列尾部新增或移除元素非常快速。但是在中部或頭...

String用法(STL基本容器)

string c 標準庫中的string表示可變長的字串,它在標頭檔案string裡面。include string using std string 直接初始化和拷貝初始化 string s1 初始化字串,空字串 string s2 s1 拷貝初始化,深拷貝字串 string s3 i am b ...