11 std::string

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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值