string class 细节描述

本文深入探讨了C++中string与wstring的基本型别、构造函数与析构函数、大小与容量管理、元素存取、比较、内容修改、子串与字符串组合、搜索与查询等核心知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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对迭代器的支持


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值