string的理解

来源:互联网 发布:nginx 域名重定向为ip 编辑:程序博客网 时间:2024/05/19 16:35
 

浅谈对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),对理解暂时没帮

助,

原创粉丝点击