STL学习笔记(string)
动机
C++标准程序库中的string class使我们可以将string当做一个一般型别。我们可以像对待基本型别那样地复制、赋值和比较string,
再也不必但系内存是否足够、占用的内存实际长度等问题。
操作函数
1.构造函数和析构函数
下表列出string的所有构造函数和析构函数

2.大小和容量
size()和length():返回string中现有的字符个数。
max_size():返回一个string最多能够包含的字符数,这个跟机器本身的限制有关系。
capacity():重新分配内存之前,string所能包含的最大字符数。
3.元素存取
string允许我们对齐所办函字符进行读写。有两种方法可以访问单一字符:
subscript(下标)操作符[]和成员函数at()。两者都返回某指定索引的对应位置上的字符。
4.比较
string支持常见的比较操作符,操作数可以是string或C-string:
5.更改内容
赋值:可以用operator=对字符串赋新值。新值可以是string、C-string或单一字符。
交换:string提供了一个特殊的swap()函数用来交换两字符串内容。
6.安插和移除字符
string提供许多成员函数用于安插、移除、替换、擦除字符。
我们可以使用operator+=、append()和push_back()添加字符。可以使用erase()函数来移除字符
7.字串和字符串接合
我们可以使用成员函数substr()从string身上提取出子字符串。例如:
std::string s("interchangeability");
s.substr() //return a copy of s
s.substr() //return string("ability")
s.substr(,) //returns string("change")
s.substr(s.find('c')) //returns string("changeability")
8.搜索和查找
下表列出string的搜寻函数

所有搜寻函数都返回符合搜寻条件之字符区间内的第一个字符的索引。如果搜寻不成狗,则返回npos。
这些搜寻函数都采用下面的参数方案:
第一参数总是被搜寻的对象;
第二参数(可有可无)指出string内的搜寻起点(索引)
第三参数(可有可无)指出搜寻的字符个数
String对迭代器的支持
string是字符的有序群集。所以C++标准程序库为string提供了相应接口,以便将字符串当做STL容器使用。
string迭代器是random access(随机存取)迭代器。所以任何STL算法都可与它搭配。
下表列出了string的迭代器操作函数

下面是string迭代器的运用实例
#include <string>
#include <iostream>
#include <algorithm>
using namespace std; bool nocase_compare(char c1,char c2)
{
return toupper(c1)==toupper(c2);
} int main()
{
string s1("This is a string");
string s2("STRING");
if(s1.size()==s2.size()&&equal(s1.begin(),s1.end(),s2.begin(),nocase_compare))
cout<<"the strings are equal"<<endl;
else
cout<<"the strings are not equal"<<endl;
string::iterator pos;
pos=search(s1.begin(),s1.end(),s2.begin(),s2.end(),nocase_compare);
if(pos==s1.end())
cout<<"s2 is not a substring of s1"<<endl;
else
cout<<'"'<<s2<<"\" is a substring of \""
<<s1<<"\"(at index "<<pos-s1.begin()<<")"<<endl;
}
STL学习笔记(string)的更多相关文章
- Effective STL 学习笔记: 多用 vector & string
Effective STL 学习笔记: 多用 vector & string 如果可能的话, 尽量避免自己去写动态分配的数组,转而使用 vector 和 string . 原书作者唯一想到的一 ...
- Effective STL 学习笔记 31:排序算法
Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记:19 ~ 20
Effective STL 学习笔记:19 ~ 20 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 39 ~ 41
Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value
Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value */--> div.org-src-container ...
- Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据
Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据 */--> div.org-src-container { font-size: 85%; font-fam ...
- Effective STL 学习笔记 32 ~ 33
Effective STL 学习笔记 32 ~ 33 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- Effective STL 学习笔记 Item 30: 保证目标区间足够大
Effective STL 学习笔记 Item 30: 保证目标区间足够大 */--> div.org-src-container { font-size: 85%; font-family: ...
- Effective STL 学习笔记 Item 26: Prefer Iterator to reverse_iterator and const_rever_itertor
Effective STL 学习笔记 Item 26: Prefer Iterator to reverse_iterator and const_rever_itertor */--> div ...
- Effective STL 学习笔记: Item 22 ~ 24
Effective STL 学习笔记: Item 22 ~ 24 */--> div.org-src-container { font-size: 85%; font-family: monos ...
随机推荐
- centos 安装squid http代理
yum -y install squid service squid start service iptables stop
- error LNK2026: 模块对于 SAFESEH 映像是不安全的(转)
原文转自 http://www.cnblogs.com/hanxi/archive/2012/06/10/2544230.html 今天使用VS2012遇到一个问题:"链接器工具错误 LNK ...
- python 查询数据
查找课程不及格学生最多的前5名老师的id 表:student 字段名 类型 是否为空 主键 描述 StdID int 否 是 学生ID StdName varchar(100) 否 学生姓名 Gend ...
- Appium+python自动化21-DesiredCapabilities详解【转载】
Appium Desired Capabilities Desired Capabilities 是由 keys 和 values 组成的 JSON 对象. 举个简单例子: { "platf ...
- 你不知道的 JavaScript 基础细节
语法部分 type 属性: 默认的 type 就是 javascript, 所以不必显式指定 type 为 javascript javascript 不强制在每个语句结尾加 “:” , javasc ...
- 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?
牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...
- ACdream1032(树形DP)
ACdream1032 题意 给出一棵树,每个节点有权值,问由 \(1\) ~ \(n\) 个节点组成的树块的权值和的最小值. 分析 首先发现 \(n\) 很小,那么我们可以开一个二维数组 \(dp[ ...
- UVA——442 Matrix Chain Multiplication
442 Matrix Chain MultiplicationSuppose you have to evaluate an expression like A*B*C*D*E where A,B,C ...
- Struts的线程安全
Servlet/JSP技术和ASP.PHP等相比,由于其多线程运行而具有很高的执行效率.由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的安全性问题.然而 ...
- [POJ 2397] Spiderman
Link: POJ 2397 传送门 Solution: 设$dp[i][j]$表示第$i$步走到$j$高度时经过的最高高度 分向上走和向下走两种方式转移即可 注意记录路径,最后输出时要逆序输出 (逆 ...