API

构造函数

string() 创建一个空的字符串

string(const string &str) 使用一个string对象初始化

string(const char *s) 使用字符串s初始化

string(int n,char c) 使用n个字符c初始化

基本赋值操作

string &operator=(const char *s)

string &operator=(const string &s)

string &operator=(char c)

string &assign(const char *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 &str) 

string &operator+=(const char *str)

string &operator+=(const char c)

string &append(const char *s) 

string &append(const char *s,int n) 把字符串s的前n个字符连接到当前字符串结尾

string &append(int n,char c) 在当前字符串结尾添加n个字符c

string &append(const string &s,int pos,int n) 把字符串s中从pos开始的n个字符连接到当前字符串结尾

查找和替换

int find(const string &str,int pos=0) const; 查找str第一次出现的位置,从pos开始查找

int find(const char *s,int pos=0) const; 同上

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; 查找s最后一次出现位置,从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

比较操作

compare 函数在>时返回1,<时返回-1,==时返回0

比较区分大小写,比较时参考字典顺序,排越前面的越小

例如:A<a

int compare(const string &s)const

int compare(const char *s)const 

子串操作

string substr(int pos=0,int n=npos)const 返回由pos开始的n个字符组成的字符串

插入和删除操作

string &insert(int pos,const char *s);

string &insert(int pos,const string &str);  插入字符串str

string &insert(int pos,int n char c);   在指定位置插入n个字符

string &insert(int pos,int n=npos);  删除从pos开始的n个字符

转换大小写

# include <algorithm>

std::transform(iterator start,iterator end,iterator object,::toupper)  //大写

std::transform(iterator start,iterator end,iterator object,::tolower)  //大写

相关要点

  1. string中访问单独字符的时候可以用at也可以用[],两者的区别是前者可以抛出异常,用out_of_range接收

  2. char *可以和string 互转,char *可以隐式转换string 反之不可以

  3. 关于const_cast 的可以看这个博客
    https://www.cnblogs.com/ider/archive/2011/07/22/cpp_cast_operator_part2.html