目录
一. string 类
很多应用程序都需要处理字符串。C语言在string.h(在++中为cstring)中提供了一系列的字符串函数,很多早期的C++实现为处理字符串提供了自己的类。
string类是由头文件string支持的(以头文件string.h和cstring支持对C风格字符串进行操纵的C库字符串函数,但不支持string类)。要使用类,关键在于知道它的公有接口,而string类包含大量的方法,其中包括了若干构造函数,用于将字符串赋给变量、合并字符串、比较字符串和访问各个元素的重载运算符以及用于在字符串中查找字符和子字符串的工具等。以string类包含的内容很多。
1. 构造字符串
<ul> 先来看string的构造函数。毕竟,对于类而言,最重要的内容之一是,有哪些方法可用于创建其对象。程序清单1使用了string的7个构造函数(用ctor标识,这是传统C++中构造函数的缩写)。表1简要地描述了这些构造函数,它首先按顺序简要描述了程序清单1使用的7个构造函数,然后列出了C++11新增的两个构造函数。使用构造函数时都进行了简化,即隐藏了这样一个事实:string实际上是模板具体化basic_string的一个typedef,同时省略了与内存管理相关的参数。 size_type是一个依赖于实现的整型,是在头文件string中定义的。string类将string::npos定义为字符串的最大长度,通常为unsigned int的最大值。以表格中使用缩写NBTS(null终止string)来表示以空字符结束的字符串一一传统的C字符串。
表1 string类的构造函数
构 造 函 数
描述
string(const char * s)
将string对象初始化为s指向的NBTS
string(size_type n, char c)
创建一个包含n个元素的string对象,其中每个元素都被初始化为字符c
string(const string & str)
将一个string对象初始化为string对象str(复制构造函数)
string()
创建一个默认的string对象,长度为0(默认构造函数)
string(const char * s, size_type n)
将string对象初始化为s指向的NBTS的前n个字符,即使超过了NBTS结尾
template
string(Iter begin, Iter end)
将string对象初始化为区间[begin, end)内的字符,其中begin和end的行为就像指针,用于指定位置,范围包括begin在内,但不包括end
string(const string & str, size_type pos, size_type n = npos)
将一个string对象初始化为对象str中从位置pos开始到结尾的字符,或从位置pos开始的n个字符
string(string && str) noexcept
这是C++11新增的,它将一个string对象初始化为string对象str,并可能修改str(移动构造函数)
string(initializer_list il)
这是C++11新增的,它将一个string对象初始化为初始化列表il中的字符
程序清单1 :[code]#include #include // using string constructorsint main(){ using namespace std; string one("Lottery Winner!"); // ctor #1 cout |