顺序容器(四):string
2015-12-07 15:11
183 查看
之所以抛弃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
标准模板库(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
相关文章推荐
- 7-RandomAccessFile 随机流
- 复制cmd里面的内容
- 音乐播放
- Android官方文档翻译 十二 3.Supporting Different Devices
- [leetcode] 89. Gray Code 解题报告
- LeetCode() Super Ugly Number
- 6-对象流(对象的序列化)
- Debian下搭建Nginx和Tomcat服务器实现负载均衡的方案
- Android popupwindow 弹出的位置问题
- mybatis在xml文件中处理大于号小于号的方法
- Leetcode题解(七)
- Hadoop 2.7.1 集群模式安装【二】环境配置
- Deformity ASP/ASPX Webshell、Webshell Hidden Learning
- 冒泡 代码范例
- 5-数据流
- 数据存储之文件存储
- Windows上部署Redis-植入Windows服务
- 4-标准输入输出流(转换流)
- 关于启用 HTTPS 的一些经验分享
- codeigniter2.2.5连接mssql2008Rc2