您的位置:首页 > 其它

顺序容器(四):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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: