string类API

C风格字符串(以\0结尾的字符数组)太过复杂,难于掌握,不太适合大程序的开发,所以C++STL中定义了一种string类,在头文件<string>中。

  string类和C风格字符串对比

  • char *是一个指针,string是一个类string封装了char *,管理这个字符串,是一个char*型的容器
  • string封装了很多实用的成员方法

如查找find,拷贝copy,删除erase,替换replace,插入insert....

  • 不用考虑内存释放和越界

       string类的常用API

  1. 构造
  2. 赋值
  3. 存取
  4. 拼接
  5. 查找
  6. 替换
  7. 比较
  8. 字串
  9. 插入
  10. 删除
/*构造*/
string();
//默认构造函数,创建一个空的字符串
string(const string& str);
//拷贝构造函数,使用一个string对象初始化另一个string对象
string(const char* s);
//含参构造函数,使用C风格字符串初始化
string(int n,char c);
//含参构造函数,使用n个字符c初始化
/*赋值*/ c重载赋值操作符=
string& operator=(const char *s);
//C风格字符串赋值给当前的字符串
string& operator=(const string& s);
//把字符串s赋给当前的字符串
string& operator=(const char c);
//字符赋值给当前的字符串
成员函数assign
string& assign(const char*s)
//C风格字符串赋值给当前的字符串
string& assign(const char*s,int n);
//把C风格字符串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个字符赋值给当前字符串
/*存取*/
char& operator[](int n);
//通过[]下标方式获取字符
//使用下标操作符获取字符串时,如果下标越界,程序将会强制终止
/*成员函数 at*/
char& at(int n);
//通过at方法获取字符
//使用at方法获取字符时,如果下标越界,at方法内部会抛出异常(exception),可以使用try-catch捕获并处理该异常
/*拼接*/
string& operator+=(const string& str);
//将字符串str追加到当前字符串的末尾
string& operator+=(const char* str);
//将C风格字符数组追加到当前字符串末尾
string& operator+=(const char c);
//将字符C追加到当前字符串末尾
/*成员函数append*/
string& append(const char*s);
//把C风格的字符数组s连接到当前字符串结尾
string& append(const char*s,int n);
//把C风格字符数组s的前n个字符连接到当前字符串结尾
string& append(const string& s);
//将字符串s追加到当前字符串末尾
string& append(const string&s,int pos,int n);
//把字符串s中从pos开始的n个字符连接到当前字符串结尾
string& append(int n,char c);
//在当前字符串结尾添加n个字符c
/*查找*/成员函数find
int find(const string& str,int pos=0)const;
//查找str在当前字符串中第一次出现的位置,从pos开始查找栈,pos默认为0
int find(const char *s,int n=0)const;
//查找C风格字符串s在当前字符串中第一次出现的位置,从pos开始查找,pos默认为0
//当查找失败时,find方法会返回-1,-1已经被封装为string的静态成员常量string::npos
static const size_t npos=-1;
/*成员函数rfind*/
//find方法通常查找字符串第一次出现的位置,而rfind方法通常查找字串最后一次出现的位置
int rfind(const string& str,int pos=npos)const;
//从pos开始向左查找最后一次出现的位置,pos默认为npos
int rfind(const chat* s,int pos=npos)const;
//查找s最后一次出现的位置,从pos开始自左查找,pos默认为npos
//关于string::npos
//-1其实是size_t类的最大值,所以string::npos其实表示“直到字符串结束”。 同时我们也可以发现string::npos和container.end()迭代器其实是相同含义的,说明我们STL的各个板块的设计是统一的 
/*成员函数replace*/
string& repalce(int pos,int n,const string& str)
//替换从pos开始n个字符为字符串s
string& replace(int pos,int n,const char* s);
//替换从pos开始的n个字符为为字符串s
/*成员函数compare*/
int compare(const string& s)const;//与字符串s比较
int compare(const char *s)const;//与C风格字符数组比较
//compare函数根据字典序比较,在当前字符串比给定字符串小时返回-1,在当前字符串比给定字符串大时返回1,相等时返回0 
//重载比较操作符
bool operator<(const string& str)const;
bool operator<(const char* str)const;
bool operator<=(const string& str)const;
bool operator<=(const char* str)const;
bool operator==(const string& str)const;
bool operator==(const char* str)const;
bool operator>(const string& str)const;
bool operator>(const char* str)const;
bool operator>=(const string& str)const;
bool operator>=(const char* str)const;
bool operator!=(const string& str)const;
bool operator!=(const char* str)const;
/*子串*/
string substr(int pos=0,int n=npos)const;
//返回由pos开始的n个字符组成的字符串,string::npos的含义是截取到整个字符串结束
/*成员函数insert*/
string& insert(int pos,const char *s);
//在pos位置插入C风格字符数组
string& insert(int pos,const string& str);
//在pos位置插入字符串str
string& insert(int pos,int n,char c);
//在pos位置插入n个字符c 
/*删除*/
string& erase(int pos,int n=npos);
//删除从pos开始的n个字符
//string::npos的含义是删除到整个字符串结束

 

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值