string (构造函数)
(1) default
构造长度为零字符的空字符串。
(2) copy
构造 str 的副本。
(3) substring
复制从字符位置 pos 开始并跨越 len 字符的 str 部分(如果任一 str 太短或 len 为 string::npos,则复制 str 的末尾)。
(4) from c-string
复制以 null(\0) 结尾的字符序列(C 字符串)。
(5)from sequence
从 s 指向的字符数组中复制前 n 个字符。
(6) fill
用字符 c 的 n 个连续副本填充字符串。
operator= (为字符串分配一个新值,替换其当前内容)
为字符串分配一个新值,替换其当前内容。
size 和 lengh (返回字符串的长度)
这两个成员函数功能是一样的:
返回字符串的长度(以字节为单位)。
这是符合字符串内容的实际字节数,不一定等于其存储容量。
operator[](返回对字符串中位置 pos 处的字符的引用)
返回字符串中位置 pos 处的字符的引用。
operator[] 会越界检查( assert(pos<s.size()) )
const char& operator[] (size_t pos) const;
迭代器 (返回指向字符串字符位置的迭代器的迭代器)
返回开始位置的迭代器。
返回最后一个字符下一个位置的迭代器。
我们暂且可以将迭代器理解为一个像指针一样的东西。
iterator 是定义在类域里面的
我们可以通过迭代器来修改指向的内容
返回最后一个字符位置的迭代器。
返回开始位置的前一个位置的迭代器。
注意:rend 和 begin 是不能混合用的
这里++底层是--,<底层是>。
sort(按升序对区域中的元素进行排序)(字典序)
需要头文件<algorithm>
push_back (将字符 c 追加到字符串的末尾)
将字符 c 追加到字符串的末尾,将其长度增加 1。
append(通过在当前值的末尾附加其他字符来扩展字符串)
(1) string
附加 str 的副本。
(2)substring
追加 str 子字符串的副本。子字符串是 str 中从字符位置 subpos 开始并跨越 sublen 字符的部分(或者直到 str 的末尾,如果任一 str 太短或 sublen 是 string::npos)。
(3)c-string
追加由 s 指向的以 \0 结尾的字符序列(C 字符串)构成的字符串的副本。
(4)buffer
追加 s 指向的字符数组中前 n 个字符。
(5) fill
连续n 个字符 c 。
(6) range
按相同的顺序追加 [first,last] 范围内字符序列的副本。
operator+= (通过在当前值的末尾附加其他字符来扩展字符串)
通过在当前值的末尾附加其他字符来扩展字符串:
对比上面两个还是+=更加好用:
pop_back(尾删)
尾删:
erase(擦除部分字符串,减少其长度)
(1)sequence
擦除字符串值中从字符位置 pos 开始并跨越 len 字符的部分(如果len>st.size()或 len 为 string::npos,则擦除字符串值的末尾。)
请注意,默认参数会擦除字符串中的所有字符(如成员函数 clear)。
(2) character
擦除 p 指向的字符。
(3) range
擦除 [first,last] 范围内的字符序列。
insert(在字符串中插入其他字符,紧挨着 pos(或 p)指示的字符)
(1) string
插入 str 的副本。
(2) substring
插入 str 的子字符串的副本。子字符串是 str 中从字符位置 subpos 开始并跨越 sublen 字符的部分(或者直到 str 的末尾,如果任一 str 太短或 sublen 是 npos)。
(3) c-string
插入由 s 指向的以 null 结尾的字符序列(C 字符串)形成的字符串的副本。
(4) buffer
在以 s 为指的字符数组中插入前 n 个字符的副本。
(5) fill
插入字符 c 的 n 个连续副本。
(6) single character
插入字符 c。
(7) range
以相同的顺序在 [first,last] 范围内插入字符序列的副本。
erase 与 insert 类似,效率低慎用。
replace(替换字符串的一部分)
用新内容替换字符串中从字符 pos 开始并跨越 len 字符的部分(或字符串在 [i1,i2) 之间的部分):
效率不高,慎用。
reserve (将字符串容量调整为计划的大小)
请求将字符串容量调整为计划的大小更改,长度最多为 n 个字符。
vs 默认是不能缩容的
g++ 会缩
resize(将字符串大小调整为 n 个字符的长度)
将字符串大小调整为 n 个字符的长度。
如果 n 小于当前字符串长度,则当前值将缩短为n 个字符,从而删除第 n个字符之外的字符。
resize()只能扩容不能缩容。
at(返回对字符串中位置 pos 处的字符)
返回对字符串中位置 pos 处的字符的引用。
下面是at 和 operator[] 的区别
find rfind (查找字符串中内容的出现项)
在字符串中搜索其参数指定的序列的第一次出现
第一个匹配的第一个字符的位置。
如果未找到匹配项,该函数将返回 string::npos。
查找字符串中内容的最后出现项
在字符串中搜索其参数指定的序列的最后一次出现项。
与find 一样没找到的话返回 npos。
因此我们可以利用这个机制来找文件后缀。
substr(生成子字符串)
子字符串是对象中从pos位置开始并跨越len个字符的部分 。
pos:
- 要作为子字符串复制的第一个字符的位置。
- 如果这等于字符串长度,则该函数返回一个空字符串。
- 如果这大于字符串长度,则抛出out_of_range。
- 注意:第一个字符用值 0(不是 1)表示。
len
子字符串中要包含的字符数(如果字符串较短,则使用尽可能多的字符)。
指示字符串末尾之前的所有字符。
从后面开始往前找。
找到与(“/\\")这两个字符匹配的任意一个字符返回下标
注意\\ 是转义字符实际上代表 \
这个则是从头开始找
operator+(返回一个新构造的字符串对象)
返回一个新构造的字符串对象,其值是 lhs 中字符的串联,后跟 rhs 的字符。
relational operators (string)(关系运算符)
在字符串对象 lhs 和 rhs 之间执行适当的比较操作
按照字典序比较
swap(交换两个字符串的值)
将字符串插入到流中和从流中提取字符串
但是cin 有一点不好的是
cin 流提取有一个特点就是遇到空格或者换行他就结束
默认规定空格或者换行是多个值之间的分割
怎样提取完整呢?如下
getline(将行从流获取到字符串)
从 is 中提取字符并将它们存储到 str 中,直到找到分隔符 delim(或换行符 '\n',用于 (2))。
如果在 is 中到达文件末尾,或者在输入操作期间发生其他错误,则提取也会停止。
如果找到分隔符,则将其提取并丢弃(即不存储分隔符,并在其之后开始下一个输入操作)。
请注意,调用之前的任何内容都将替换为新提取的序列。
感谢大家的观看!