string基本概念
本质
- string 是C++风格的字符串,而string本质上是一个类
string 与 char* 区别
- char* 是一个指针,指向一个内存空间
- string 是一个类,类内部封装了char*,并提供了很多成员方法
- string 对内存空间进行管理,不需要担心复制越界和取值越界等
string构造函数
构造函数原型:
string(); // 默认构造函数,创建一个空的字符串
string(const char *s); // 创建一个字符串,并用字符串s初始化
string(const string &str); // 拷贝构造函数,创建一个字符串,并使用字符串str进行初始化
string(int n, char c); // 创建一个字符串,并使用n个字符c进行初始化
string赋值操作
赋值的函数原型:
// 重载操作符=
string& operator=(const char *s); // char*类型字符串赋值给当前字符串
string& operator=(const string &str); // 把字符串str赋值给当前字符串
string& operator=(char c); // 把字符c赋值给当前字符串
// assign赋值
string& assign(const char *s, int n); // 把char*类型字符串的前n个赋值给当前字符串
string& assign(const string &str); // 把字符串str赋值给当前字符串
string& assign(int n, char c); // 把n个字符赋值给当前字符串
string字符串拼接
// 重载操作符+
string& operator+(const char *s);
string& operator+(const char c);
string& operator+(const string &str);
// 重载操作符+=
string& operator+=(const char *s);
string& operator+=(const char c);
string& operator+=(const string &str);
// append拼接
string& append(const char *s);
string& append(const char *s, int n); // 把字符串s的前n个字符拼接到当前字符串结尾
string& append(const string &str); // 把字符串str拼接到当前字符串结尾
string& append(const string &str, int pos, int n); // 把字符串str从pos开始的n个字符拼接到当前字符串结尾
string查找和替换
功能描述:
- 查找:查找指定字符串是否存在
- 替换:替换指定位置的字符串
// 正向查找
int find(const string &str, int pos = 0) const; // 从pos开始,查找字符串str第一次出现位置
int find(const char *s, int pos = 0) const; // 从pos开始,查找字符串s第一次出现位置
int find(const char *s, int pos, int n) const; // 从pos开始,查找字符串s的前n个字符第一次出现位置
int find(const char c, int pos = 0) const; // 从pos开始,查找字符c第一次出现位置
// 反向查找
int rfind(const string &str, int pos = npos) const; //查找字符串str最后一次出现位置,到npos为止
int rfind(const char *s, int pos = npos) const; //查找字符串s最后一次出现位置,到npos为止
int rfind(const char *s, int pos, int n) const; //查找字符串s的前n个字符最后一次出,到npos为止
int rfind(const char c, int pos = npos) const; //查找字符c最后一次出现位置,到npos为止
// 替换
string& replace(int pos, int n, const string &str); //将从pos开始的n个字符替换为字符串str
string& replace(int pos, int n, const char *s); //将从pos开始的n个字符替换为字符串s
注意:
string str1("123&123&123");
int fpos= str1.rfind("123",4); // 此处fpos= 4,
//指定的pos=4不等价于“123&1”查找“123”,而是在"123&123&123"用“123”去匹配,匹配到pos=4位置则不再继续匹配。
string字符串比较
函数原型:
//compare =返回0 > 返回1 <返回-1
int compare(const string &str) const;
int compare(const char *s) const;
string字符存取
函数原型:
//重载操作符[]
char& operator[](int n); //通过[]方式存取字符
//at函数
char& at(int n); // 通过at方式存取字符
string插入和删除
函数原型:
//insert 函数
string& insert(int pos, const char *s); //在指定位置pos之前插入字符串s
string& insert(int pos, const string &str); //在指定位置pos之前插入字符串str
string& insert(int pos, int n, char c); //在指定位置pos之前插入n个字符c
//erase 函数
string& erase(int pos, int n = npos); //删除从Pos开始的n个字符(默认到结尾)
string子串
函数原型:
//substr函数,从字符串中获取子串
string substr(int pos = 0, int n = npos) const; //返回从pos开始的n个字符组成的字符串