string基本概念
本质:
-
string是C++风格的字符串,而string本质上是一个类
string和char * 区别:
-
char * 是一个指针
-
string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。
-
string提供了从string转化为char*的函数成员函数,假设有一个string类的对象s,要将其转换为char *,只需调用s.c_str(),其返回值就是对应的char *指针;这样可以利用char *指针来使用C的接口函数。
特点:
string 类内部封装了很多成员方法
例如:查找find,拷贝copy,删除delete 替换replace,插入insert,获取大小等等
string管理char*所分配的内存,不用担心赋值越界和取值越界等,由类内部进行负责
string的大小函数:
s.size();//获取字符串s的大小
s.length();//返回字符串s的字符数
s.max_size();//当前系统环境剩下的内存最多能容纳多少字符!!string是可变长度!!自动增长!
s.capacity();//当前的string对象s的容量,它的值总是会比size()大1个或者多个,为了避免多次分配空间,系统会为每一个string对象预留一点空间
string的迭代器:
定义string类对象时,系统内部自动生成两个指针,一个指针指向第一个有效字符(begin),一个指针指向最后一个有效字符的下一个空间('即 ')(end),区间是左闭右开,可以通过string类的begin方法与end方法来获得这两个指针。
迭代器类型关键字:iterator
说明迭代器变量时需要声明类型,否则该指针会因为不知道该指针的步长而导致偏移错误。
利用迭代器遍历整个string对象
string::iterator it
for(it=s.begin();it!=s.end();it++) cout<<*it< string构造函数 构造函数原型: string(); //创建一个空的字符串 例如: string str; string(const char* s); //使用字符串s初始化 string(const string& str); //使用一个string对象初始化另一个string对象 string(int n, char c); //使用n个字符c初始化 string赋值操作 功能描述: 给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字符串拼接 功能描述: 实现在字符串末尾拼接字符串 函数原型: 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查找和替换 功能描述: 查找:查找指定字符串是否存在 替换:在指定的位置替换字符串 函数原型: 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最后一次出现位置 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字符串比较 功能描述: 字符串之间的比较 比较方式: 字符串比较是按字符的ASCII码进行对比 = 返回 0 > 返回 1 < 返回 -1 函数原型: int compare(const string &s) const; //与字符串s比较 int compare(const char *s) const; //与字符串s比较 string字符存取 string中单个字符存取方式有两种 char& operator[](int n); //通过[]方式取字符 ,[ ]运算符不会检查越界访问错误 char& at(int n); //通过at方法获取字符,越界访问报产生异常,更安全 string插入和删除 功能描述: 对string字符串进行插入和删除字符操作 函数原型: 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子串 功能描述: 从字符串中获取想要的子串 函数原型: string substr(int pos = 0, int n = npos) const; //返回由pos开始的n个字符组成的字符串



