STL -容器 <string> 相关API及原理
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) //大写
相关要点
string中访问单独字符的时候可以用at也可以用[],两者的区别是前者可以抛出异常,用out_of_range接收
char *可以和string 互转,char *可以隐式转换string 反之不可以
关于const_cast 的可以看这个博客
https://www.cnblogs.com/ider/archive/2011/07/22/cpp_cast_operator_part2.html
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment