文章目录
String容器使用简要总结
String基本概念
本质:
- string是C++风格的字符串,而string本质上是一个类
string和char*的区别: - char*是一个指针
- string是一个类,其内部封装了char来管理这个字符串,是一个char型的容器
特点:
string类内封装了很多成员方法
例如:find(查找),拷贝(copy),删除(delete),插入(insert)
string管理char*所分配的内存,不用担心复制越界和取值越界等,由类的内部负责
String构造函数
构造函数原型
string(); //创建一个空串
string(const char* s); //利用C风格字符串,这里是顶层const
string(const string& str); //使用一个string对象初始化另一个string(拷贝构造)
string(int n, char c); //使用n个相同字符
示例
string s1;
const char* str = "123";
string s2(str);
string s3(s2);
string s4(5, '2');
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赋给当前字符串
示例
string str1;
str1 = "123";
string str2;
str2 = str1;
string str3;
str3 = 'c';
string str4;
str4.assign("123");
string str5;
str5.assign("123", 2);
string str6;
str6.assign(str5);
string str7;
str7.assign(5, '2');
String字符串拼接
实现字符串的末尾追加拼接
函数原型
string& operator+=(const char* str); //重载+=操作符
string& operator+=(const char c);
string& operator+=(const string& str);
string& append(const char *s); //C型字符串追加到末尾
string& append(const char *s, int n); //追加前n个字符
string& append(const string &s); //追加一个string
string& append(const string &s, int pos, int n); //从pos开始追加n个
示例
string str = "123";
str += "456";
str += 'c';
string str1 = "abc";
str += str1;
str.append("12");
str.append("145", 2);
str.append(str1);
str.append(str1, 1, 3);
String查找和替换
函数原型
int find(const string& str, int pos = 0) const; //从pos开始查找str出现的第一个位置
int find(const char* s, int pos = 0) const; //C型字符串的查找
int find(const char* s, int pos, int n) const; //从pos开始查找s的前n个字符第一次出现的位置
int find(const char c, int pos = 0) const; //字符查找
int rfind(const string& str, int pos = npos) const; //从末尾开始的查找
int rfind(const char* s, int pos = npos)const;
int rfind(const char* s, int pos, int n) const;
int rfind(const char c, int pos = npos) const;
string& replace(int pos, int n, const string& str); //从pos开始的n个字符替换为串str
string& replace(int pos, int n, const char* s); //C型字符串的替换
注这里的find函数返回的是位置,类似于数组的下标,而replace返回的是串。同时函数末尾const的作用是防止内部变量的修改,固定this指针
示例
string str = "1234abc5678";
str.find("4a");
str.find("4a", 3);
str.find("4a", 1, 1);
str.find('c');
str.replace(1, 5, "222");
String 字符串比较
比较方式
按照字符的ASCII码进行对比
- 如果 = 返回 0
- 如果 > 返回 1
- 如果 < 返回 -1
函数原型
int compare(const string &s) const;
int compare(const char *s) const;
示例
string str1 = "abcde";
string str2 = "ABCD";
//str1与str2比较,str1大于str2,故result结果为1
int result = str1.compare(str2);
字符存取
函数原型
char& opeartor[](int n); //通过下标方式
char& at(int n); //通过at方法
示例
string str = "123456";
cout << str[1] << endl;
cout << str.at(1) << endl;
//两种方式的结果均为字符2
String 插入和删除
函数原型
string& insert(int pos, const char* s); //在指定位置插入字符串(C型)
string& insert(int pos, const string& str); //
string& insert(int pos, int n, char c); //指定位置插入n个字符
string& erase(int pos, int n = npos); //删除从pos开始的n个字符
示例
string str = "ABC";
str.insert(1, "ggBBB");
str.insert(1, 5, 'v');
str.erase(1, 2);
获取子串
函数原型
string substr(int po = 0, int n = npos) const; //返回从pos开始的n个字符组成的字符串
示例
string str = "123456";
string str1 = str.substr(1, 2);