1.string相关型别
表头文件<string>定义了所有的字符串类型和函数
在string之中,basic_string<>被定义为所有字符串的基本型别。
namespace std{
template<class charT,
class traits = char_traits<charT>,
class Allocator = allocator<charT> >
class basic_string;
}
string 型别和wstring型别
c++标准库提供了两个basic_string<>特化版本
string是针对char而预先定义的特化版本:
namespace std{
typedef basic_string<char> string
}
wstring是针对wchar_t而预先定义的特化版本:
namespace std{
typedef basic_string<wchar_t> wstring;
}
2.操作函数
3.构造函数和析构函数
4.strings和c-strings
5.大小和容量
为了高效无误的运用strings,你应该理解strings的大小和容量是如何配合的。
一个string存在3种大小:
size()和length()
返回string中现在的字符个数,上述两个函数等效。
成员函数empty()用来检验字符数是否为0,亦即字符串是否为空。这个函数比其他两个函数运行速度更快。
mwx_size()
此函数返回一个string最多包含的字符数,一个string通常包含一个单独内存区块内的所有字符。所有可能跟PC机器本身的限制有关系。返回值一般而言是索引型别的最大值减1,。为最大值减1的原因有以下两个,本身最大值为npos,还有就是可以轻易在内部缓冲区之后添加一个‘\0’,以便将这个string当做c-string使用。一旦长度大于max_size就会抛出length_error错误。
capacity()
重新分配内存之前,string所能包含的最大字符数。
让string拥有足够的内存很重要,原因有以下两点:
1.重新分配会造成指向string的reference,pointer和iterators失效。
2.重新分配很耗时间。
当程序要用来指向string的reference,pointer和iterators的时候,或者是需要很快的执行速度的时候,就需要考虑容量问题。成员函数reserve()
C++标准规定,唯有相应reserve()的时候,容量才有可能缩减。因此即使发生“字符被删除或改变”的事情,任何其他字符只要位于“被操作字符”之前,指向他们身上的那么reference,pointer,iterators就任然有效。
6.元素存取
7.比较
8.更改内容
9.子串和字符串结合
10.搜索和查询
12.npos的意义
13.string对迭代器的支持