目录
目录
3.string(const string& str) 常用
4.string(const string& str ,size_t pos ,size_t len = npos);
5.string(const char*s,size_t n);
find_first_not_of find_last_not_off
一. string类对象的常见构造

1.string(); 常用
构造空的string类对象,即空字符串。

2.string(const char *s); 常用
用字符串来构造string类对象

3.string(const string& str) 常用
拷贝构造函数

4.string(const string& str ,size_t pos ,size_t len = npos);
从str字符串下标为pos位置开始拷贝len个数的字符。
(如果len>剩余字符数,有多少拷多少。同理,len的缺少参数npos为整型最大值,不传len就默认拷贝到最后)

5.string(const char*s,size_t n);
拷贝该字符串的前n个字符。

6.string(size_t n, char c);
string类对象中包含n个字符c

二.string类对象的访问及遍历操作
1.string::operator[] 常用
返回字符串中下标为Pos的字符。(在字符串 顺序表中适用)


遍历字符串的第一种方式: (s1.size() 返回s1字符串的字符个数)

2.begin end
begin获取一个字符的迭代器 + end获取最后一个字符下一个位置的迭代器.
(可以看作begin指向第一个字符,end指向最后一个字符的下一个位置)


第二种遍历方式:利用迭代器

提问:const iterator begin() 和 const_iterator begin() 有什么区别?
相当于 int* const 和 const int*


第三种遍历方式:范围for(本质还是迭代器)

3.rbegin rend
可以理解为 rbegin指向最后一个元素,rend指向第一个元素前面
rbegin++向rend的位置移动 (可以进行倒着遍历)



对字符串按字典序进行排序
#include<algorithm> sort[first,last) 左闭右开

排序的范围可以自由控制

三.string类对象的修改操作
1.push_back (尾插)
在字符串中尾插字符


pop_back (尾删)
void pop_back();
如果字符串为空,调用
pop_back()会导致未定义行为。因此,使用前最好检查字符串是否为空。
back (返回尾字符)
用于返回字符串末尾的字符。它返回一个对字符串最后一个字符的引用。
char& back(); // 返回末尾字符的引用
const char& back() const; // 常量版本,返回末尾字符的常量引用
可以通过 back() 修改字符串的最后一个字符(如果字符串是非 const)。
如果字符串为空,调用 back() 会导致未定义行为。因此,在使用前应确保字符串非空。
2.append
尾插字符串

常用的只有 append(const char* s)

3.operator+= 常用
尾插字符 字符串


基本上可以代替上面两个的功能。
4.assign (相当于赋值)


5.insert (插入) 效率低


6.erase (删除)


7.replace (部分替换)


8.c_str(常用)
返回c格式的字符串

string file("test.cpp");
FILE* fout = fopen(file.c_str(), "r");//第一个参数要为指针
char ch = fgetc(fout);
while (ch != EOF)
{
cout << ch;
ch = fgetc(fout);
}
9.find rfind(常用)

从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置(找不到返回 npos 也就是整型最大值 无符号-1)

rfind

从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置

10.substr

在str中从pos位置开始,截取n个字符,然后将其返回

11.find_frist_of find_last_of
从字符串pos位置开始往后找 字符串中所含的任意一个字符 ,返回该字符在字符串中的位置(找不到返回 npos 也就是整型最大值 无符号-1)



从字符串pos位置开始往前找 字符串中所含的任意一个字符 ,返回该字符在字符串中的位置

find_first_not_of find_last_not_off
与find_first_of不同的是,find_first_not_of找的是不是字符串中的字符


同理find_last_not_of也是
四.. string类对象的容量操作
1.size(常用) length capacity

2.empty(常用)

检测字符串释放为空串,是返回true,否则返回false

3.clear (常用)
清空有效字符

4.reserve(常用)

为字符串预留空间(不能访问)

提前扩容就可以减少扩容次数,提高效率。
5.resize(常用)

s.resize(n,'c');
将有效字符的个数该成n个,多出的空间用字符c填充(可访问,默认用'/0'填充)

可以看到,s.resize(100,'x') ,不仅改变了size,还实现了扩容 改变了capacity

可以看到,s.reserse(10); 后capacity仍是15,因为string对象创建好之后,内部会有16个字符的空间,有一个空间存放/0。(如果capacity>15,s.reserse(10)会缩容到15)
(缩容:先找一块空间,再把内容拷贝,最后再释放原空间)时间换空间
当字符串长度小于16时,使用内部固定的字符数组来存放
当字符串长度大于等于16时,从堆上开辟空间
五.string非成员重载
1.getline (获取一行带空格的字符串 )
cin>> 获取字符串会以空格为结束符。


2.operator+


六.string函数
1.to_string (数字变字符)


2.stoi stol ....
字符串转数字

1万+

被折叠的 条评论
为什么被折叠?



