天天看點

C++泛型程式設計——常用容器string一、string

目錄

一、string

1.特點

2.string構造函數

3.string指派

4.string字元串拼接

5.string查找

6.string替換

7.string字元串比較

8.string字元串存取

9.string插入和删除

10.string子串

一、string

1.特點

string本質是一個類,類内部封裝了char*,管理這個字元串,是一個char*型的容器。

2.string構造函數

  • string();

     //建立一個空的字元串 例如: string str;

    string(const char* s);

     //使用字元串s初始化
  • string(const string& str);

     //使用一個string對象初始化另一個string對象
  • string(int n, char c);

     //使用n個字元c初始
string s1; //建立空字元串,調用無參構造函數
	cout << "str1 = " << s1 << endl;

	const char* str = "hello world";
	string s2(str); //把c_string轉換成了string

	cout << "str2 = " << s2 << endl;

	string s3(s2); //調用拷貝構造函數
	cout << "str3 = " << s3 << endl;

	string s4(10, 'a');
	cout << "str3 = " << s3 << endl;
           

3.string指派

使用=來指派

  • string& operator=(const char* s);

     //char*類型字元串 指派給目前的字元串
  • string& operator=(const string &s);

     //把字元串s賦給目前的字元串
  • string& operator=(char c);

     //字元指派給目前的字元串
  • 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賦給目前字元串

4.string字元串拼接

使用+=來進行字元串拼接

  • string& operator+=(const char* str);

     //重載+=操作符
  • string& operator+=(const char c);

     //重載+=操作符
  • string& operator+=(const string& str);

     //重載+=操作符
  • string& append(const char *s);

     //把字元串s連接配接到目前字元串結尾
  • string& append(const char *s, int n);

     //把字元串s的前n個字元連接配接到目前字元串結尾
  • string& append(const string &s);

     //同operator+=(const string& str)
  • string& append(const string &s, int pos, int n);

    //字元串s中從pos開始的n個字元連接配接到字
string str1 = "我";
	str1 += "愛玩遊戲";

	string str2 = "LOL DNF";
	str1 += str2;
           

5.string查找

find查找是從左往後,rfind從右往左

find找到字元串後傳回查找的第一個字元位置,找不到傳回-1

//查找
	string str1 = "abcdefgde";

	int pos = str1.find("de"); //輸出下标為3,下标從0開始

	pos = str1.rfind("de");//輸出下标為3,從右往左查,下标還是正常順序
           
  • int find(const string& str, int pos = 0) const;

     //查找str第一次出現位置,從pos開始查找
  • int find(const char* s, int pos = 0) const;

     //查找s第一次出現位置,從pos開始查找
  • int find(const char* s, int pos, int n) const;

     //從pos位置查找s的前n個字元第一次位置
  • int find(const char c, int pos = 0) const;

     //查找字元c第一次出現位置
  • int rfind(const string& str, int pos = npos) const;

     //查找str最後一次位置,從pos開始查找
  • int rfind(const char* s, int pos = npos) const;

     //查找s最後一次出現位置,從pos開始查找
  • int rfind(const char* s, int pos, int n) const;

     //從pos查找s的前n個字元最後一次位置
  • int rfind(const char c, int pos = 0) const;

     //查找字元c最後一次出現位置

6.string替換

replace在替換時,要指定從哪個位置起,多少個字元,替換成什麼樣的字元串

replace(從第幾個字元下标開始,幾個字元替換成,幾)

string str1 = "abcdefgde";
	str1.replace(1, 3, "1111"); //輸出a1111efgde
           
  • string& replace(int pos, int n, const string& str);

     //替換從pos開始n個字元為字元串str
  • string& replace(int pos, int n,const char* s);

     //替換從pos開始的n個字元為字元串s

7.string字元串比較

字元串比較是按字元的ASCII碼進行對比

= 傳回 0     字元串對比主要是用于比較兩個字元串是否相等

> 傳回 1 

< 傳回 -1

  • int compare(const string &s) const;

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

     //與字元串s比較

8.string字元串存取

用[ ]來進行存取

  • char& operator[](int n);

     //通過[]方式取字元
  • char& at(int n);

     //通過at方法擷取字元
str[0] = 'x';
	str.at(1) = 'x';
	cout << str << endl
           

9.string插入和删除

插入和删除的起始下标都是從0開始

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

     //插入字元串
  • string& insert(int pos, const string& str);

     //插入字元串
  • string& insert(int pos, int n, char c);

     //在指定位置插入n個字元c
  • string& erase(int pos, int n = npos);

     //删除從Pos開始的n個字元
string str = "hello";
	str.insert(1, "111");  //h111ello
	cout << str << endl;

	str.erase(1, 3);  //從1号位置開始3個字元  hello
	cout << str << endl;
           

10.string子串

  • string substr(int pos = 0, int n = npos) const;

     //傳回由pos開始的n個字元組成的字元串
string email = "[email protected]";
	int pos = email.find("@");                 //傳回下标為5
	string username = email.substr(0, pos);    //從下标0開始的5個字元
	cout << "username: " << username << endl;
           

繼續閱讀