STL/string at master · amazingzby/STL · GitHub
本文是第一篇,最简单的一篇,主要介绍string类。
string是什么:
string是STL的字符串类型,用来表示字符串,而在使用string之前,字符串通常是用char *来表示。string是一个类,封装了char *,管理这个字符串,是一个char*型的内容管理器。
string使用前准备:
#include<string>
using namespace std;
string的构造函数:
string();//默认构造函数
string(const string &str);//拷贝构造函数
string(const char *s);用字符串s初始化
string(int n,const char c);用n个字符c初始化
取字符串的某个元素:
用at()方法或者方括号方法:
string s1="safdfdsfgdg";
char chD=s1.at(5);
char chD=s1[5];
中括号和at方法大致一样,唯一的区别为对越界处理方式的不同:
比如取第50个字符(越界),用中括号取值导致程序错误,用at取值抛出异常(out_of_range)
string获取内容的方式:用c_str()
cout<<s1.c_str();
把string的内容拷贝至char *所指向的内存中:
int copy(char *s,int n,int pos=0)const;
把当前串中以pos开始的n个字符拷贝至以s为起始位置的字符数组中,返回实际拷贝的数目。
int iCount=s1.copy(e,7,0);
长度,以及是否为空判断
int length()const;返回当前字符串长度,长度不包括字符串结尾的'\0'
bool empty()const;判断是否为空,空为真,非空为假
string的赋值:
string &operator=(const string &s);//将字符串s赋值给当前字符串
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 &assign(const string &s,int start,int n);把s从start开始的n个字符串赋值给当前字符串
string &operator+=(const string &s);
string &operator+=(const char *s);
string &append(const char *s);
string &append(const char *s,int n);
上述前三个为把字符串s连接至当前字符串结尾,后一个为把s的前n个字符串连接至尾部
string &append(const string &s);用法同operator+=()
string &append(const string &s,int pos,int n);将s从pos开始的n个字符连接到当前字符串尾
string &append(int n,char c);将n个字符c加至结尾
string字符串的比较
int compare(const string &s)const;
int compare(const char *s)const;
上述比较函数在>时返回1,<时返回-1,==时返回0,首先按第一个字符比较,如果相同再比较第二个,以此类推,按字符ASCII的大小比较
取字符串的子串:
string substr(int pos=0,int n=npops)const;取从pop开始的n个字符组成的字符串
字符串的查找:
int find(char c,int pop=0)const;从pos开始查找c在当前字符串的位置
int find(const char *s,int pos=0)const;从pos开始查找字符串s在当前字符串的位置
int find(const string &s,int pos=0)const;从pos开始查找字符串s在当前字符串的位置
find函数如果找不到,就返回-1
反向查找:效果同正向查找,只是查找方式时从后往前查找
int rfind(char c,int pos=npos);
int rfind(const char *s,int pos=npos)const;
int rfind(const string &s,int pos=npos)const;
string的插入
string &insert(int pos,const char *s);
string &insert(int pos,const string &s);
上述插入函数在pos位置插入字符串s
string &insert(int pos,int n,char c);在pos位置插入n个字符c
字符串删除:
string &erase(int pos=0,int n=npos);删除pos开始的n个字符,返回修改后的字符串
string的替换:
string &replace(int pos,int n,const char *s);删除从pos开始的n个字符,然后在pos处插入s
string &replace(int pos,int n,const string &s);删除从pos开始的n个字符,然后在pos处插入s
void swap(string &s2);交换当前字符串与s2的值