【C++】string类--构造、拷贝、赋值及其模拟实现
tring出现的原因1.1. C语言中的字符串处理 在C语言中字符串都是以“\0”结尾的字符集合为了操作这个字符集合C语言提供了str系列的标准库如strlen、strcat、strcpy等。但是这些函数与字符串时分离的也就是说C语言中的字符串并不是以对象形式出现的所以这就并不符合C中的面向对象的思想并且底层空间依然需要用户自己管理而且可能出现越界访问的情况。 为了更加方便地使用字符串C设计了string类。2. 标准库中的string类2.1. string类 string官方文档 在使用string类时一定要包含#includestring这里注意区分string和string.h字符串使用了表示字符序列的类string就是将一堆字符按顺序存放的类标准字符串类提供了对此类对象的支持其接口就类似于标准字符串的接口只不过单独提供了对于单字节字符串的操作string 类是使用 char 作为它的字符类型使用它的默认 char_traits 和分配器类型也就是string其实就是一个别名string类是basic_string模板类的一个实例它使用char来实例化basic_string模板类并用char_traits和allocator作为basic_string的默认参数(根于更多的模板信息请参考basic_string)这个类独立于所使用的编码来处理字节:如果用来处理多字节或变长字符(如UTF-8)的序列这个类的所有成员(如长度或大小)以及它的迭代器将仍然按照字节(而不是实际编码的字符)来操作总结string是表示字符串的字符串类该类的接口与常规容器的接口基本相同再添加了一些专门用来操作string的常规操作string在底层实际是basic_string模板类的别名using string std::basic_stringchar不能操作多字节或者变长字符的序列3.string类的常见构造及模拟实现3.1. string类对象的常见构造代码语言javascriptAI代码解释int main() { string s1; //构造空的s1 等价于string s1(); string s2(hello);//用C格式字符串构造 string s3(s2); //调用拷贝构造函数 return 0; }