string class 细节描述

论坛 期权论坛 脚本     
匿名技术用户   2020-12-27 20:55   585   0

1.string相关型别

表头文件<string>定义了所有的字符串类型和函数

在string之中,basic_string<>被定义为所有字符串的基本型别。

namespace std{

template<class charT,

class traits = char_traits<charT>,

class Allocator = allocator<charT> >

class basic_string;

}

string 型别和wstring型别

c++标准库提供了两个basic_string<>特化版本

string是针对char而预先定义的特化版本:

namespace std{

typedef basic_string<char> string

}

wstring是针对wchar_t而预先定义的特化版本:
namespace std{

typedef basic_string<wchar_t> wstring;

}



2.操作函数

3.构造函数和析构函数

4.strings和c-strings

5.大小和容量

为了高效无误的运用strings,你应该理解strings的大小和容量是如何配合的。

一个string存在3种大小:

size()和length()

返回string中现在的字符个数,上述两个函数等效。

成员函数empty()用来检验字符数是否为0,亦即字符串是否为空。这个函数比其他两个函数运行速度更快。

mwx_size()

此函数返回一个string最多包含的字符数,一个string通常包含一个单独内存区块内的所有字符。所有可能跟PC机器本身的限制有关系。返回值一般而言是索引型别的最大值减1,。为最大值减1的原因有以下两个,本身最大值为npos,还有就是可以轻易在内部缓冲区之后添加一个‘\0’,以便将这个string当做c-string使用。一旦长度大于max_size就会抛出length_error错误。

capacity()

重新分配内存之前,string所能包含的最大字符数。

让string拥有足够的内存很重要,原因有以下两点:

1.重新分配会造成指向string的reference,pointer和iterators失效。

2.重新分配很耗时间。

当程序要用来指向string的reference,pointer和iterators的时候,或者是需要很快的执行速度的时候,就需要考虑容量问题。成员函数reserve()

C++标准规定,唯有相应reserve()的时候,容量才有可能缩减。因此即使发生“字符被删除或改变”的事情,任何其他字符只要位于“被操作字符”之前,指向他们身上的那么reference,pointer,iterators就任然有效。

6.元素存取

7.比较

8.更改内容

9.子串和字符串结合

10.搜索和查询

12.npos的意义

13.string对迭代器的支持


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP