36.3 字符串

在<string>中,标准库提供了通用字符串模板basic_string:

元素(字符串)是连续存储的,这样底层输入操作可以安全地将basic_string的字符序列作为源或目的。

basic_string提供了强保证(见13.2节):若一个basic_string操作抛出了异常,则字符串保持不变。

对一些标准字符类型,标准库已经提供了相应的特例化版本:

所有这些字符串都提供很多操作。

与容器类似(见第31章),basic_string的设计目的不是为了用作基类,而且它提供了移动语义,因此能高效地以传值方式由函数返回。

36.3.1 string与C风格字符串

我假定读者通过本书中的很多示例已经较为熟悉string了,因此本节从一些例子开始,它们对比了string的使用和C风格字符串的使用(见43.4节),后者在主要熟悉C和C风格C++的程序员中很流行。

考虑通过连接用户标识符和域名来构造一个电子邮件地址:

这个例子很简单,接下来考虑一个很正确的C风格版本。一个C风格的字符串就是一个指向以零结尾的字符数组的指针。用户控制内存分配并负责释放: ...

Get C++程序设计语言(第4部分:标准库)(原书第4版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.