C++ String函数用法

目录

目录

一. string类对象的常见构造

1.string(); 常用

2.string(const char *s); 常用

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);

6.string(size_t n, char c);

二.string类对象的访问及遍历操作

1.string::operator[] 常用

2.begin end

3.rbegin rend

三.string类对象的修改操作

1.push_back (尾插)

pop_back (尾删)

back (返回尾字符)

2.append

3.operator+= 常用

4.assign  (相当于赋值)

5.insert (插入)  效率低

6.erase (删除)

7.replace (部分替换)

8.c_str(常用)

9.find rfind(常用)

10.substr 

11.find_frist_of     find_last_of

find_first_not_of    find_last_not_off

四.. string类对象的容量操作

1.size(常用) length capacity

2.empty(常用)

3.clear (常用)

4.reserve(常用)

5.resize(常用)

五.string非成员重载

1.getline (获取一行带空格的字符串 )

2.operator+

六.string函数

1.to_string (数字变字符)

2.stoi stol ....


一. 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 ....

字符串转数字 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值