8.模板和string(下)

string是管理字符串的类
随着计算机的发展,出现了很多编码(用于管理字符),例如ASCII、UTF-8、UTF-16、UTF-32、万国码(统一码)等等。不同的string就是根据不同的编码设计的,因此设计成模板。
实际使用时,需要根据项目设计的编码来选择使用哪一种string容器。
strings 是由字符数组或字符顺序表实现的对象,

#include<string>

重载流插入和流提取

这个是拷贝string的一部分这是猜的,可以下面的解释
拷贝出来了
就算最后参数是15也不会报错,
第三个值不传有缺省值,npos,直接拷贝结束
npos是string const静态的成员变量,可以直接在类里面用,外面指定类域 ,值是-1吗,真实的值是-1吗,存的-1的补码全1但是给给这个类型size_tunsigned int 瞬间变成整形最大值了,
字符串没有这么长,4g ,猜一下第五个功能:取字符串前n个

底层是动态开辟的数组,自动调用析构,构造也自动调用,只是我们要学一学怎么传参
这是赋值重载,后两个不大用,
string重载了一个这个运算符
可以想象字符底层是这样的
这个【】就可以让他像数组一样使用
就可以返回第i个字符的引用
返回这个引用有什么意义呢,出了这个作用域还在啊,可以返回 在堆上,很方便修改
数组的越界c++检查是不确定的,但是这里检查一键查一个啊准
因为有断言
大量调用不是有消耗嘛,设置成 内联。因为也很短,逻辑形成一个闭环
