浅谈对STL string的认识
大体简单的可以理解为C++ string 为c字符操作数据的封装。
private:
chr* m_pcdata; //存数据末尾是'\0'
public:
Operation //各种字符串操作
***默认string 初始化 alloc的空间是8 capability()=8 size()=length() =0
***辅助函数会检索字符串末尾,自动添加NULL
***push_back检索空间是否够,如果够直接在后面添加字符,添加NULL
***其余的Insert Append 都是创建新字符串,复制。删除
***重载了<< >>符号,参考下列代码。
****输入输出遇到/0都停止 string st("hello\0word"); size = 5
**** 理解string 分配的空间Capacity和Size区别
string szInPut (1000,'0');
cout<<szInPutPrompt<<endl;
cin>>szInPut; // size = 输入个数 但是Capacity没有变。后面的‘0’存在
return szInPut;
**** 内存管理自动检测空间是否足够,如果不够重新分配。
******Append具体根据函数参数决定,内存管理方式。
详细的理解 template< class CharT,class Traits=char_traits<CharT>,class
Alloc>
class basic_string.
CharT是表示字符类型,char w_chart
char_traint 完全特化 使用string.h里面的方法 里面封装了字符串的操作结构,
char_traint_base 提供了字符串的操作函数函数 非string.h
String_alloc_base 提供的是字串的内存分配和管理 三个指针 M_start M_end
M_end_of_storage
baseic_string 可以简单理解继承上面类,这里忽略中间(String_base),对理解暂时没帮
助,