STL顺序容器之字符串
来源:互联网 发布:dnf客户端源码 编辑:程序博客网 时间:2024/05/16 23:52
头文件 #include <string>
定义
string对象的定义和初始化以及读写
string s4(n,'c'); 将s4 初始化为字符'c'的n个副本
getline(cin,s6); 读取字符到遇到换行,空格可读入,直到‘\n’结束,
getline(cin,s7,'a'); 一个直到‘a’结束,其中任何字符包括'\n'都能够读入
string s("avcde",3); 则s读入到第3个字符,即s中为avc
string s("avcdd",2,2);则s读入从第2个字符起后两个字符,即s中为cd
属性
capacity();容器大小
vs2005默认容量为15个,以后以16为单位增加
vc 6.0 默认容量为31个,以后以32为单位增加
reserve();设置容器大小(只能变大,不能变小)
length(); 字符串长度
size();字符串大小,与length()作用基本相同,返回值类型为无符号整形size_t
resize();设置字符串大小
输出
c_str(); 即字符串
at(); 同下标访问运算符类似,越界时会异常而不会崩溃,可以处理
修改
插入
string a("abcdefg");
string b("ab");
char* c="ab";
insert(1,"ab") 在字符串下标1位置插入字符串ab
insert(1,c) 在字符串下标1位置插入字符数组c
insert(1,b,0,2);在字符串下标1位置插入string 类b 的从下标为0字符起后两个字符(包括下标为0)截取的字符串
insert(1,c,2); 插入字符数组c的前两个字符
insert(1,5,'o');在字符串下标1位置插入5个o
insert(1,str1.begin(),str1.end()) 给首地址和尾地址+1插入一段也是可以的
尾巴插入(拼接)
append函数 用法与insert基本相同
append(str1.begin(),str1.end()) 给首地址和尾地址+1拼接一段也是可以的
重新赋值
assign函数 用法与insert基本相同
操作函数
比较
compare(str),大于返回1,小于返回-1,等于返回0
string a("abcdefg");
a.compare(0,1,"abgdfdf") 从第0位置截取长度为1字符串与目标字符串比较,若相等则,返回0
a.compare(0,1,"abgdfdf",0,1) 从第0位置截取长度为1字符串与目标字符串从第0位置截取长度为1字符串比较,若相等则返回0。
复制
string a("dfdf");
char b[6]={0};
a.copy(b,2,0);
string类从索引0开始两个字符复制到char数组中,返回值为字符个数,结果为“df”。
查找
find函数 可找字符串和字符
string a("dfdf");
a.find("df"),返回索引,结果为0
a.find("df",1)从索引1开始,结果为2
a.find("d",1)从索引1开始,结果为2
未找到则返回4294967295(无符号整型,可用int强转为-1)
返回字串
substr函数
a.substr(1,3)从索引1开始,取长度为3的字符,结果为fdf
交换
swap函数
a.swap(b),则a与b交换
迭代器
string::iterator ite; 迭代器就像一个智能指针
相当于char* 的指针或其他类型的指针
begin函数返回一个迭代器,指向字符串的第一个元素
end函数返回一个迭代器,指向字符串的末尾(最后一个字符的下一个位置)
注意:下标运算时ite需要指向头
迭代器的失效
当字符串重新申请空间时失效,需要重新操作。
删除
erase函数,删除指定元素
string str("abcdef");
str.erase(str.begin()+1); 得到acdef
两个参数为删除一段元素
str.erase(str.begin()+2,str.begin()+4); 得到abef
相关算法
需要头文件#include<algorithm>
遍历
for_each
第三个参数可有可无,是对数据的操作
示例:
void fun(char c) 容器中是什么,就是什么类型(不能是迭代器)
{
cout<< c;
}
void FunForeach()
{
string str("qwerrwgjkj");
for_each(str.begin(),str.end(),fun);
}
排序
sort函数
示例:sort(str.begin(),str.end());
从大到小排序
greater函数
头文件#include<functional>
sort(str.begin(),str.end(),greater<char>()); 容器中是什么,就是什么类型
- STL顺序容器之字符串
- STL之顺序容器
- STL 之顺序容器
- STL之顺序容器
- STL容器之顺序容器
- STL 顺序容器之Vector
- STL 顺序容器之表
- STL总结之顺序容器
- 【STL】STL之顺序容器和关联容器总结
- stl之顺序容器学习笔记1
- stl之顺序容器学习笔记2
- stl之顺序容器学习笔记3
- stl之顺序容器学习笔记1
- stl之顺序容器学习笔记2
- stl之顺序容器学习笔记3
- STL顺序容器之vector类型
- STL顺序容器之vector类型
- STL 顺序容器之双端队列
- C指针深入详解理解----不再害怕指针!(1)
- [bzoj1143][祭祀][ctsc2008]解题报告
- HBuilder开发App 01
- BlackBerry10开发环境搭建
- C指针深入详解理解----不再害怕指针!(2)
- STL顺序容器之字符串
- 数据源架构模式之表数据入口
- Linux 网络命令
- 在输出坑里爬行的日子--acm
- 网络爬虫基础
- Systick 延时函数详解
- 树莓派下python,使用USB和CSI摄像头进行视频连续截图,并进行灰度、二值化处理
- Linux启动FTP服务
- C语言结构体常见使用以及使用方法