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(11)            //return string("ability")
s.substr(5,6)           //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迭代器的运用实例

 1 #include <string>
 2 #include <iostream>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 bool nocase_compare(char c1,char c2)
 7 {
 8     return toupper(c1)==toupper(c2);
 9 }
10 
11 int main()
12 {
13     string s1("This is a string");
14     string s2("STRING");
15     if(s1.size()==s2.size()&&equal(s1.begin(),s1.end(),s2.begin(),nocase_compare))
16         cout<<"the strings are equal"<<endl;
17     else
18         cout<<"the strings are not equal"<<endl;
19     string::iterator pos;
20     pos=search(s1.begin(),s1.end(),s2.begin(),s2.end(),nocase_compare);
21     if(pos==s1.end())
22         cout<<"s2 is not a substring of s1"<<endl;
23     else
24         cout<<'"'<<s2<<"\" is a substring of \""
25             <<s1<<"\"(at index "<<pos-s1.begin()<<")"<<endl;
26 }
View Code

 

转载于:https://www.cnblogs.com/runnyu/p/4857209.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值