首页 理论教育 C++STL精解:字符串类模板basic

C++STL精解:字符串类模板basic

时间:2023-10-25 理论教育 版权反馈
【摘要】:标准库字符串功能的基础是basic_string,该类模板提供了许多成员和函数,与标准容器类似。在本书中,仍以string表示任何字符串型别。basic_string没有提供一组完整的操作函数。与其他标准容器相似,basic_string提供了一组成员类型名,程序员能使用这些与串相关的类型。模板basic_string<Ch>能够存放集合Ch中的任何字符,特别是string中的‘0’。虽然字符串类string包含了诸多的成员和函数,但个别功能没能够实现,例如正则表达式和较复杂的文本处理功能。

C++STL精解:字符串类模板basic_string

标准库字符串功能的基础是basic_string,该类模板提供了许多成员和函数,与标准容器类似。该类模板的声明如下:

在上述模板声明中,第一个参数(classCh)是说明单个字符(Ch)所属型别(class);第二个参数(classTr=char_traits<Ch>)是特性类别,用以提供字符串类别中的所有字符核心操作。该特性类别规定了“复制字符”或“比较字符”的做法;如果不指定该特性类别,系统会根据现有的字符型别采用默认的特性类别。第三个参数带有默认值(classA=allocator<Ch>),用以定义字符串类别所采用的内存模式,通常设定为“默认内存模型al-locator”。该模板及其相关功能都定义在名称空间std中,由头文件<string>给出。其中包含了两个定义类型,可以为最常用的串类型提供便于使用的名称,即C++STL提供了两个bas-ic_string<>实例化版本:

其中,wstring类是为了便于使用宽字符集,例如unicode或某些欧洲字符集。但所有字符串类型均使用相同接口,其用法和问题是相同的。在本书中,仍以string表示任何字符串型别。

basic_string和vector类似,而basic_string还提供典型的字符串操作,例如子串检索。basic_string没有提供一组完整的操作函数。通常string不能直接使用数组或者vector,为了更好地支持string的常见应用,程序员在实现过程中需要尽量减少复制。尤其对于较短的字符串,不应使用自由存储空间,但允许对较长的字符串进行简单修改。

basic_string<T>没有虚函数,这点和其他标准库类型一致。当需要设计更复杂的文字处理类时,可考虑用它加以实现。

与其他标准容器相似,basic_string提供了一组成员类型名,程序员能使用这些与串相关的类型。(www.xing528.com)

例如,

basic_string除支持最简单的basic_string<char>之外,还支持许多不同种类的字符串,例如,

无论如何定义字符串,模板basic_string的大量函数均可便捷地使用。模板basic_string<Ch>能够存放集合Ch中的任何字符,特别是string中的‘0’。“字符类型”Ch的行为必须像字符,但它不能包含用户确定的复制构造函数、析构函数和复制赋值

虽然字符串类string包含了诸多的成员和函数,但个别功能没能够实现,例如正则表达式和较复杂的文本处理功能。

总体而言,string类似的字符串操作逐渐变得简单了。程序员可以定义string类型的对象、string类的重载操作符和成员函数,这使字符串操作变得非常容易。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈