码迷,mamicode.com
首页 > 其他好文 > 详细

STL学习笔记(string)

时间:2015-10-06 16:49:26      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

动机

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

 

STL学习笔记(string)

标签:

原文地址:http://www.cnblogs.com/runnyu/p/4857209.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!