c++ primer plus 第16章string 类和标准模板库,string 类
c++ primer plus 第16章string 类和标准模板库,string 类
文章目录
string 类16.1
很多应用程序都需要处理字符串。C语言在stringh(在C++中为cstring)中提供了一系列的字符串函数,很多早期的C++实现为处理字符串提供了自己的类。第4章介绍了ANSIISOC++string类,而第 12章创建了一个不大的 String类,以说明设计表示字符串的类的某些方面。
string 类是由头文件 string 支持的(注意,头文件 string.h和 cstring 支持对 C-风格字符串进行操纵的 C库字符串函数,但不支持 string类)。要使用类,关键在于知道它的公有接口,而 string 类包含大量的方法,其中包括了若干构造函数,用于将字符串赋给变量、合并字符串、比较字符串和访问各个元素的重载运算符以及用于在字符串中查找字符和子字符串的工具等。简而言之,string类包含的内容很多。
16.1.1 构造字符串
先来看 string 的构造函数。毕竟,对于类而言,最重要的内容之一是,有哪些方法可用于创建其对象。程序清单16.1使用了string的7个构造函数(用 ctor 标识,这是传统 C++中构造函数的缩写)。表16.1简要地描述了这些构造函数,它首先使用顺序简要描述了程序清单16.1使用的7个构造函数,然后列出了C++11 新增的两个构造函数。使用构造函数时都进行了简化,即隐藏了这样一个事实:string 实际上是模板具体化 basic string的一个typedef,同时省略了与内存管理相关的参数(这将在本章后面和附录F中讨论)。sizetype是一个依赖于实现的整型,是在头文件string中定义的。string类将 string:mnpos 定义为字符串的最大长度,通常为 unsigned int 的最大值。另外,表格中使用缩写NBTS(null-terminated string)来表示以空字符结束的字符串–传统的C字符串。
程序清单 16.1 str1.cpp
// str1.cpp -- introducing the string class
#include <iostream>
#include <string>
// using string constructors
int main()
{
using namespace std;
string one("Lottery Winner!"); // ctor #1
cout << one << endl; // overloaded <<
string two(20, '$');