赞
踩
一.string类
1.string是表示字符串的类。该类的接口与常规容器基本相同,再添加了一些专门用来操作字符串的操作。
二.string类常见的对象构造
1.string():构造空的字符串。
2.string(const char *s):用c-string来构造string类对象
3.string (const string &s):拷贝构造函数
三.string类常用操作
1.s+t:将串s和t拼接为一个新串
2.s=t:用t更新s
3.s==t:判断s和t是否相等
4.s!=t:判断s和t是否不等
6.s[i]:访问下标为i的字符
四.输入整行字符串
1.getline可以输入整行字符串(需包含string头文件)
如:getline(cin,s2)
2.getline可以有第三个参数,用来做字符串的结束标志符。
五.string类对象常用的容量操作
1.size:返回数组的长度
2.empty:检测字符串释放为空串,是返回true,否返回false
3.clear:清空有效字符
4.reserve:为字符串预留空间
5.resize:将有效字符的个数改为n个,多出来的用字符c填充
六.浅层复制与深层复制
1.浅层复制:实现对象间元素的一一对应的复制。
浅层复制相当于把数组1的指针的内容和size的值原样搬到数组2,同时数组1和数组二的指针指向同一片地址即同一个数组单元,其数组元素本身没有被复制,只是把地址复制了。所以在析构数组1时已经把这片内存单元释放了,在析构数组2时又会delete一遍,就会发生出错。
2.深层复制:当被复制的对象为指针类型时,不是复制该指针成员本身,而是将指针所指的元素进行复制
这里将数组一的size复制到了数组2,但points没有复制。数组2的points指向了新开辟了一片空间,然后将数组一的元素复制到数组2.
七.string类的简单模拟实现(构造函数,拷贝构造函数,赋值运算符重载,析构)
class string { public: string(const char *str = "")//:构造函数 { if (str == nullptr) { str = ""; } Str = new char[strlen(str) + 1]; strcpy(Str,str); } void swap(char *a, char* b) { char s; s = *a; *a = *b; *b = s; } //:拷贝构造函数 string::string(const string &s) :Str(new char[strlen(s.Str) + 1]) { strcpy(Str, s.Str); } //:赋值运算符重载 string& operator=(const string& s) { swap(Str, s.Str); return *this; } //:析构 ~string() { if (Str) { delete[] Str; Str = nullptr; } } private: char* Str; };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。