F.2 数据信息、构造函数及其他(1)
可以根据其效果来描述构造函数。由于类的私有部分可能依赖于实现,因此可根据公用接口中可用的数据来描述这些效果。表F.1列出了一些方法,它们的返回值可用来描述构造函数和其他方法的效果。注意,其中的大部分术语来自STL。
表F.1一些string数据方法
|
方 法< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
返 回 值 |
|
begin( ) |
指向字符串第一个字符的迭代器 |
|
cbegin( ) |
一个const_iterator,指向字符串中的第一个字符(C++(www.cppentry.com)11) |
|
end( ) |
为超尾值的迭代器 |
|
cend( ) |
为超尾值的const_iterator(C++(www.cppentry.com)11) |
|
rbegin( ) |
为超尾值的反转迭代器 |
|
crbegin( ) |
为超尾值的反转const_iterator(C++(www.cppentry.com)11) |
|
rend( ) |
指向第一个字符的反转迭代器 |
|
crend( ) |
指向第一个字符的反转const_iterator(C++(www.cppentry.com)11) |
|
size( ) |
字符串中的元素数,等于begin( )到end( )之间的距离 |
|
length( ) |
与size( )相同 |
|
capacity( ) |
给字符串分配的元素数。这可能大于实际的字符数, capacity( ) – size( )的值表示在字符串末尾附加多少 字符后需要分配更多的内存 |
|
max_size( ) |
字符串的最大长度 |
续表
|
方 法 |
返 回 值 |
|
data( ) |
一个指向数组第一个元素的const charT*指针, 其第一个size( )元素等于*this控制的字符串中对 应的元素,其下一个元素为charT类型的charT(0) 字符(字符串末尾标记)。当string对象本身被修 改后,该指针可能无效 |
|
c_str( ) |
一个指向数组第一个元素的const charT*指针,其第 一个size( )元素等于*this控制的字符串中对应的 元素,其下一个元素是charT类型的charT(0) 字符(字符串尾标识)。当string对象本身 被修改后,该指针可能无效 |
|
get_allocator( ) |
用于为字符串object分配内存的allocator对象的副本 |
请注意begin( )、rend( )、data( )和c_str( )之间的差别。它们都与字符串的第一个字符相关,但相关的方式不同。begin( )和rend( )方法返回一个迭代器,正如第16章讨论的,这是一种广义指针。具体地说,begin( )返回一个正向迭代器模型,而rend( )返回反转迭代器的一个副本。这两种方法都引用了string对象管理的字符串(由于string类使用动态内存分配,因此实际的string内容不一定位于对象中,因此,我们使用术语"管理"来描述对象和字符串之间的关系)。可以将返回迭代器的方法用于基于迭代器的STL算法中。例如,可以使用STL reverse( )函数来反转字符串的内容:
|
C++(www.cppentry.com)实现可能将string对象的字符串表示为动态分配的C-风格字符串,并使用char*指针来实现正向迭代器。在这种情况下,实现可能让begin( )、data( )和c_str( )都返回同样的指针,但返回指向3个不同的数据对象的引用也是合法的(虽然更复杂)。
