string类型
头文件
#include <string>
基础模板类
template <typename charT,
typename traits = char_traits<charT>,
typename Allocator = allocator<charT> >
class basic_string;
部分运算操作 | 描述 |
assign(),= | 赋值 |
swap() | 两个string互换 |
append(), push_back,+= | 增加字符 |
insert() | 插入字符 |
erase(), pop_back() | 删除字符 |
clear() | 清空 |
resize() | 修改字符数(在尾部删除或增加) |
replace() | 替换 |
+ | 连接 |
compare(),==, !=, <, <=, >, >= | 比较 |
empty() | 是否为空 |
size(), length() | 返回字符数 |
max_size() | 返回可能的最大字符数 |
capacity() | 不重新分配的情况下可容纳的最大字符数 |
reserve() | 倒序 |
shrink_to_fit() | 缩小当前字符数的内存 |
[ ], at() | 字符访问 |
front(), back() | 访问最前或最后的字符 |
>>, getline() | 从流中读取 |
<< | 写入流 |
stoi(), stol(), stoll() | 转成有符号整型 |
stoul(), stoull() | 转成无符号整型 |
stof(), stod(), stold() | 转成浮点型 |
to_string(), to_wstring() | 整型或浮点型转成字符串 |
copy() | 复制内容到字符数组 |
data(), c_str() | 以C字符串或字符数组返回内容 |
substr() | 返回子串 |
begin(), end() | 返回普通迭代器支持 |
cbegin(), cend() | 返回常量迭代器支持 |
rbegin(), rend() | 返回反向迭代器 |
crbegin(), crend() | 返回常量反向迭代器 |
get_allocator() | 返回构造器 |
1. 转换成C风格字符串或字符数组
const char* string::c_str() const 包含所有字符和'\0'
const char* string::data() const 包含所有字符没有'\0'
size_type string::copy(char* buf, size_type buf_size) const
size_type string::copy(char* buf, size_typt buf_size, size_type idx) const
返回复制的字符数, idx表示从第几个开始复制
2. 赋值
// str赋值给string, 并返回*this
string& string::operator= (const string& str)
string& string::assign(const string& str)
// Move语义,把str的值给string,之后str的值将是未定义
string& string::operator= (string&& str)
string& string::assign(string&& str)
// 最多复制num个字符,从idx开始
string& string::assign(const string& str, size_type idx, size_type num)
// 将C风格字符串赋值给string
string& string::operator= (const char* cstr)
string& string::assign(const char* cstr)
// 把字符数组赋值给string
string& string::assign(const char* chars, size_type chars_len)
// 字符赋值给string
string& string::operator= (char c)
string& string::assign(size_type num, char c)
// 迭代器方式赋值
string& string::assign (InputIterator beg, InputIterator end)
3. 交换赋值
void string::swap (string& str)
void swap (string& str1, string& str2)
这两个函数的比赋值函数速度更快
4. 附加(追加)字符串 return *this
string& string::operator += (const string& str)
string& string::append (const string& str)
string& string::operator += (const char* cstr) // C风格字符串, '\0'结尾
string& string::append (const char* cstr)
// 最多追加num个字符, 从idx开始
string& string::append (const string& str, size_type idx, size_type num)
// 从字符数组中追加
string& string::append (const char* chars, size_type chars_len)
// 重复追加num个字符c
string& string::append (size_type num, char c)
// 追加单个字符
string& string::operator += (char c)
void string::push_back (char c)
// 迭代器追加
string& string::append (InputIterator beg, InputIterator end)
// 初始化列表追加
string& string::operator += (initializer-list)
void string::append (initializer-list)
5. 插入字符串
// 插入C风格字符串, 从idx开始
string& string::insert (size_type idx, const char* cstr)
// 从idx开始插入str的所有内容
string& string::insert (size_type idx, const string& str)
// 从idx开始插入, str从str_idx开始至多共str_num个字符
string& string::insert (size_type idx, const string& str, size_type str_idx, size_type str_num)
// 从idx开始插入, 字符数组的前chars_len个字符
string& string::insert (size_type idx, const char* chars, size_type chars_len)
// 从idx开始,重复插入num个字符c
string& string::insert (size_type idx, size_type num, char c)
// 从pos指向的字符之前,重复插入num个字符c
iterator string::insert (const_iterator pos, size_type num, char c)
// 在pos指向的字符之前插入字符c, 返回插入字符的位置
iterator string::insert (const_iterator pos, char c)
// [beg, end)范围的所有字符插入pos指向的字符之前,返回插入第一个字符的位置,没有插入则返回pos
iterator string::insert (const_iterator pos, InputIterator beg, InputIterator end)
// 初始化列表所有字符插入pos指向的字符之前,返回插入第一个字符的位置,没有插入则返回pos
iterator string::insert (const_iterator pos, initializer-list)
6. 擦除(删除)字符串
// 删除所有字符, earse返回*this
void string::clear ()
string& string::erase ()
// 删除idx开始的所有字符, 或最多len个字符
string& string::erase (size_type idx)
string& string::erase (size_type idx, size_type len)
// 删除pos指向的字符
iterator string::erase (const_iterator pos)
// 删除[beg, end)范围内的所有字符
iterator string::erase (const_iterator beg, const_iterator end)
// 删除最后一个字符
void string::pop_back ()
7. 字符串替换
// 从idx开始替换, 最多len个字符, 数据源是str的所有字符, return *this
string& string::replace (size_type idx, size_type len, const string& str)
// 替换范围是 [beg, end), 数据源是str的所有字符
string& string::replace (begin_iterator beg, begin_iterator end, const string& str)
// 替换*this的最多len字符,从索引idx开始. 数据源是str, 从str_idx开始的最多str_num字符
string& string::replace (size_type idx, size_type len, const string& str, size_type str_idx, size_type str_num)
// 从idx开始, 最多替换len个字符, 数据源是cstr
string& string::replace (size_type idx, size_type len, const char* cstr)
// 替换范围是[bed, end), 数据源是cstr
string& string::replace (const_iterator beg, const_iterator end, const char* cstr)
// 从idx开始最多替换len个字符, 数据源是chars字符数组
string& string::replace (size_type idx, size_type len, const char* chars, size_type chars_len)
// 替换范围[bed, end), 数据源是chars字符数组
string& string::replace (const_iterator beg, const_iterator end, const char* chars, size_type chars_len)
// 替换idx开始共len个字符, 数据源是字符c
string& string::replace (size_type idx, size_type len, size_type num, char c)
// 替换范围是[bed, end), 数据源是字符c
string& string::replace (const_iterator beg, const_iterator end, size_type num, char c)
// 用[newBeg, newEnd)的内容替换[beg, end)
string& string::replace (const_iterator beg, const_iterator end, InputIterator newBeg, InputIterator newEnd)
// 用初始化列表替换[beg, end)的内容
string& string::replace (const_iterator beg, const_iterator end, initializer-list)
8. 搜索与查找
8.1 查找字符
// 从头开始查找, 返回查找到第一个c的字符索引, 查找失败返回string::npos
size_type string::find (char c) const
// 从idx开始查找, 返回查找第一个c的字符索引,查找失败返回string::npos
size_type string::find (char c, size_type idx) const
// 查找最后一个c出现的位置, 并返回字符索引, 查找失败返回string::npos
size_type string::rfind (char c) const
// 从idx开始, 查找最后一个c出现的位置, 返回字符索引, 查找失败返回string::npos
size_type string::rfind (char c, size_type idx) const
8.2 查找子串
//搜索第一个/最后一个子串str(从索引idx开始). 搜索成功,返回子串的第一个字符的索引. 失败返回string::npos
size_type string::find (const string& str) const
size_type string::find (const string& str, size_type idx) const
size_type string::rfind (const string& str) const
size_type string::rfind (const string& str, size_type idx) const
// 搜索与c字符串相等的第一个/最后一个子串(从索引idx开始). 搜索成功,返回子串的第一个字符的索引. 失败返回string::npos
size_type string::find (const char* cstr) const
size_type string::find (const char* cstr, size_type idx) const
size_type string::rfind (const char* cstr) const
size_type string::rfind (const char* cstr, size_type idx) const
// 从idx搜索第一个/最后一个子串, 与字符数组chars相等。搜索成功,返回子串的第一个字符的索引. 失败返回string::npos
size_type string::find (const char* chars, size_type idx, size_type chars_len) const
size_type string::rfind (const char* chars, size_type idx, size_type chars_len) const
8.3 集合元素查找
在*this中查找str的任何一个元素, 返回第一个出现的位置, 没有则返回string::npos
size_type string::find_first_of (char c) const
size_type string::find_first_of (char c, size_type idx) const
size_type string::find_first_of (const string& str) const
size_type string::find_first_of (const string& str, size_type idx) const
size_type string::find_first_of (const char* cstr) const
size_type string::find_first_of (const char* cstr, size_type idx) const
size_type string::find_first_of (const char* chars, size_type idx, size_type chars_len) const
在*this中查找str的任何一个元素, 返回第一个不匹配的位置, 没有则返回string::npos
size_type string::find_first_not_of (char c) const
size_type string::find_first_not_of (char c, size_type idx) const
size_type string::find_first_not_of (const string& str) const
size_type string::find_first_not_of (const string& str, size_type idx) const
size_type string::find_first_not_of (const char* cstr) const
size_type string::find_first_not_of (const char* cstr, size_type idx) const
size_type string::find_first_not_of (const char* chars, size_type idx, size_type chars_len) const
// 返回最后一个不匹配的位置
size_type string::find_last_of (char c) const
size_type string::find_last_of (char c, size_type idx) const
size_type string::find_last_of (const string& str) const
size_type string::find_last_of (const string& str, size_type idx) const
size_type string::find_last_of (const char* cstr) const
size_type string::find_last_of (const char* cstr, size_type idx) const
size_type string::find_last_of (const char* chars, size_type idx, size_type chars_len) const
size_type string::find_last_not_of (char c) const
size_type string::find_last_not_of (char c, size_type idx) const
size_type string::find_last_not_of (const string& str) const
size_type string::find_last_not_of (const string& str, size_type idx) const
size_type string::find_last_not_of (const char* cstr) const
size_type string::find_last_not_of (const char* cstr, size_type idx) const
size_type string::find_last_not_of (const char* chars, size_type idx, size_type chars_len) const
9. 截取子串
// 返回所有字符串
string string::substr () const
// 返回idx开始的剩余所有字符串
string string::substr (size_type idx) const
// 返回idx开始最多len个字符的字符串
string string::substr (size_type idx, size_type len) const
10. 大小与容量
10.1 大小/长度
// 字符串为空(不包含任何字符), 相当于 size()==0, empty速度更快
bool string::empty () const
// 返回字符数量, 两者等价
size_type string::size () const
size_type string::length () const
// 返回一个字符串可以包含的最大字符数
size_type string::max_size () const
10.2 容量
// 返回字符串不重新分配的情况下可以包含的字符数
size_type string::capacity () const
// 非绑定请求收缩
void string::reserve ()
// 至少保留num数量的字符内存, 当num小于当前容量, 该函数效果与reserve等效
void string::reserve (size_type num)
// 减小内存以适应当前字符数, 等效于 reserve(0)
void string::shrink_to_fit ()
11. 比较
比较函数
bool comparison (const string& str1, const string& str2)
bool comparison (const string& str, const char* cstr)
bool comparison (const char* cstr, const string& str)
// 返回值: 0 相等; <0 this<str; >0 this>str
int string::compare (const string& str) const
// 从idx开始最多len个字符, 与str比较
int string::compare (size_type idx, size_type len, const string& str) const
// 从idx开始最多len个字符, 与str中 str_idx开始最多str_len个字符, 作比较
int string::compare (size_type idx, size_type len, const string& str, size_type str_idx, size_type str_len) const
// 与C风格字符串或字符数组比较
int string::compare (const char* cstr) const
int string::compare (size_type idx, size_type len, const char* cstr) const
int string::compare (size_type idx, size_type len, const char* chars, size_type chars_len) const
12. 字符访问
// 访问第idx个字符(索引从0开始), 速度比 at() 更快
char& string::operator [ ] (size_type idx)
const char& string::operator [ ] (size_type idx) const
// 访问第idx个字符(索引从0开始)
char& string::at (size_type idx)
const char& string::at (size_type idx) const
// 返回第一个字符
char& string::front ()
const char& string::front () const
// 返回最后一个字符
char& string::back ()
const char& string::back () const
13. 输入输出功能
// 把str写入数据流
ostream& operator << (ostream&& strm, const string& str)
// 从字符流中读取一个字的字符(通过设置字符流的属性控制读取量)
istream& operator >> (istream&& strm, string& str)
// 读取一行, 默认'\n'为换行符
istream& getline (istream& strm, string& str)
istream& getline (istream&& strm, string& str)
// 读取一行, delim为换行符
istream& getline (istream& strm, string& str, char delim)
istream& getline (istream&& strm, string& str, char delim)
14. 数值转换
// idxRet 返回第一个没有被处理的字符索引; base 指定一个基数
// 转换将跳过前头的空格
int stoi (const string& str, size_t* idxRet = nullptr, int base = 10)
int stol (const string& str, size_t* idxRet = nullptr, int base = 10)
int stoul (const string& str, size_t* idxRet = nullptr, int base = 10)
int stoll (const string& str, size_t* idxRet = nullptr, int base = 10)
int stoull (const string& str, size_t* idxRet = nullptr, int base = 10)
int stof (const string& str, size_t* idxRet = nullptr, int base = 10)
int stod (const string& str, size_t* idxRet = nullptr, int base = 10)
int stold (const string& str, size_t* idxRet = nullptr, int base = 10)
// 数值转换成字符串
string to_string (Type val)
wstring to_wstring (Type val)