顺序容器(四):string

本文详细介绍了C++标准库中的string类,包括构造函数、赋值、增删操作、遍历、查找替换比较等常用函数,以及判断、大小和其他实用功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。

标准模板库(STL)提供了一个std::string类,其是std::basic_string的一个特化,它是一个容器类,可把字符串当作普通类型来使用,并支持比较、连接、遍历、STL算法、复制、赋值等等操作,这个类定义在<string>头文件中。


常用函数:

(1)    构造函数/赋值
string s1;      默认构造函数,s1为空串
string s2(s1);   将s2初始化为s1的一个副本
string s3("valuee");   将s3初始化一个字符串面值副本
string s4(n,'c');   将s4 初始化为字符'c'的n个副本
operator+= 附加内容到string对象
operator= 对string对象赋值
assign 对string赋新值替换掉当前内容(有多个重载)

(2)    增加函数/删除函数
append 附加一或多个字符到字符串
insert 插入数据到string对象的指定位置
push_back 附加一个字符到string对象
pop_back 清除字符串中最后一个字符
clear 清空string对象
erase 从string对象中指定位置清除一个或多个字符(有多个重载)

(3)    遍历函数
at 得到字符串中指定位置的字符的引用
front 得到字符串中第一个字符的引用
back 得到字符串中最后一个字符的引用
operator[] 得到string对象中的一个字符
c_str 得到对应的C字符数组(返回const char*)
data 得到对应的C字符数组
begin 返回指向字符串的开始位置的迭代器
end 返回指向字符串的结尾位置后面位置的迭代器
rbegin 返回指向反方向开始处的反方向迭代器
rend 返回指向反方向结尾处的反方向迭代器
cbegin 返回指向字符串的开始位置的const迭代器
cend 返回指向字符串的结尾位置后面位置的const迭代器
crbegin 返回指向字符串的反方向开始位置的const迭代器
crend 返回指向字符串的反方向结尾位置后面位置的const迭代器

(4)查找/替换/比较
find 在string对象中查找内容,返回第一个出现的位置(有多个重载,可参考下面的参考链接)
rfind 查找内容在string对象中最后出现的位置(有多个重载)
find_first_not_of 查找不在string对象中的字符(有多个重载)
find_last_of 从后向前在string对象中查找字符(有多个重载)
find_last_not_of 从后向前查找不在string对象中的字符(有多个重载)
replace 替换string对象的部分内容(有多个重载,可参考下面的参考链接)
substr 得到子字符串
compare 比较当前字符串和另外一个被比较的字符串的内容(有多个重载,可参考下面的参考链接)

(5)    判断函数
empty 判断string对象是否为空

(6)    大小函数
capacity 返回分配的存储大小
length 返回string对象包含字符的个数
size 返回string对象的长度
max_size 返回string对象的最大长度
resize(size) 改变string对象的大小为size

(7)    其他函数
copy 拷贝字符串:从string对象中拷贝子字符串到s指向的字符数组。
get_allocator 返回字符串的内存分配器
reserve 更改string对象的容量
shrink_to_fit 更改字符串的容量为字符串的长度
swap 和其它string对象交换内容

附substring示例:

	string strTest("t_ests trin g_ifs_oao3oe_232322");
	int pos1 = strTest.find('_');
	int pos2 = strTest.rfind('_');
	string str = strTest.substr(pos1 + 1, pos2 - pos1 - 1);//得到子串:eststring_ifs_oao3oe

string常用方法参考链接: http://www.howsoftworks.net/cplusplus.api/std/indexstring.html






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值