实现自己的字符串类String
2016-03-24 16:12
483 查看
原因
因为string预分配与SDS上比较有些不足,所以重新封装了自己的字符串类String。类的名称(编号)
FDB_String.hFDB_String.h
类的声明与作用
FDB中的字符串类。类开发的必要性,唯一性
以有文档,见compare_string_SDS.md类中各函数的复杂度,可能瓶颈
new的使用仍有瓶颈。且存在new的遗留问题。
类的声明与定义
class String { //重载部分运算符 //重载 '>','<','==','!='关系运算符 friend bool operator<(const String &lhs, const String &rhs); friend bool operator>(const String &lhs, const String &rhs); friend bool operator==(const String &lhs, const String &rhs); friend bool operator!=(const String &lhs, const String &rhs); //重载输入输出运算符 friend std::ostream& operator<<(std::ostream &os, const String &rhs); friend std::istream& operator>>(std::istream &is, String &rhs); //重载相加运算符 friend String operator+(const String &lhs, const String &rhs); friend String operator+(const String &lhs, const char *rhs); private: int size; //字符串已用长度 int free; //字符串已经使用长度 char *str; //空闲长度 public: String(); //无参构造 String(char *rhs); //行参为char* 构造函数 String(const String &rhs); //复制构造函数 ~String(); //析构函数 //重载运算符 String & operator=(const String &rhs); //赋值运算符 String & operator=(const char *rhs); //行参为char* 的赋值运算符 char& operator[](int i); //下标运算符 String& operator+=(const String &rhs); //复合赋值运算符 String& operator+=(const char *rhs); //行参为char *的复合赋值运算符 //接口函数 int getsize() const; //获取当前字符串已用空间 int getfree() const; //获取字符串空闲空间 void Print(); //打印字符串 String &StringAdd(const String &str2); //向字符串添加String类型内容 String &StringAdd(const char *s); //向字符串添加char *类型的内容 String &StringClear(); //清除字符串内容 String &StringSizeClear(size_t pos, size_t len); //以pos开始清除之后len长度的内容 String &StringChange(const char *s); //修改字符串为s String &StringChange(const String &str2); //修改字符串为str2 };
类成员函数接口说明
友元函数:
1.friend bool operator<(const String &lhs, const String &rhs); 以lhs对象和rhs对象中的str成员比较大小。若lhs大于rhs则返回ture,否则返回false。 2.friend bool operator>(const String &lhs, const String &rhs); 以lhs对象和rhs对象中的str成员比较大小。若lhs小于rhs则返回ture,否则返回false。 3.friend bool operator==(const String &lhs, const String &rhs); 判断lhs对象和rhs对象中的str成员相等。若相等返回ture,否则返回false。 4.friend bool operator!=(const String &lhs, const String &rhs); 判断lhs对象和rhs对象中的str成员相等。若不相等返回ture,否则返回false。 5.friend std::ostream& operator<<(std::ostream &os, const String &rhs); 将rhs对象中str对象打印出来。 6.friend std::istream& operator>>(std::istream &is, String &rhs); 将is流内的数据写入rhs对象内。 7.friend String operator+(const String &lhs, const String &rhs); 将lhs对象和rhs对象向加,返回向加后的结果。 8.friend String operator+(const String &lhs, const char *rhs); 将lhs对象和rhs数组向加,返回向加后的结果。
成员函数:
1.int getsize() const; 获取当前字符串已用空间,无参 2.int getfree() const; 获取字符串空闲空间,无参 3.void Print(); 打印字符串,无参 4.String &StringAdd(const String &str2); 向字符串添加String类型内容。参数str2为需要添加的String类字符串。返回添加后的字符串。 5.String &StringAdd(const char *s); 向字符串添加char *类型的内容.参数s为需要添加的char *类型字符串。返回添加后的字符串。 6.String &StringClear(); 清除字符串内容,无参,返回清除后的字符串。 7.String &StringSizeClear(size_t pos, size_t len); 以pos开始清除之后len长度的内容,参数以说明,返回清除后的字符串。 8.String &StringChange(const char *s); 修改字符串为s。参数s为代替原字符串的char*类型字符串。返回改变后的字符串。 9.String &StringChange(const String &str2); 修改字符串为str2。参数str为代替原字符串的String类类型字符串。返回改变后的字符串。 10.String & operator=(const String &rhs); 赋值运算符。将rhs对象赋值给this对象。返回this对象。 11.String & operator=(const char *rhs); 行参为char* 的赋值运算符。将rhs数组赋值给this对象。返回this对象 12.char& operator[](int i); 下标运算符。获取this对象中str成员下标为i的引用。 13.String& operator+=(const String &rhs); 复合赋值运算符。将rhs对象与this对象相加并赋值给this对象。 14.String& operator+=(const char *rhs); 行参为char *的复合赋值运算符。将rhs数组与this对象相加并赋值给this对象。
相关文章推荐
- 即使被拖库,也可以保证密码不泄露
- zoj 2587 kmp的应用
- 百度前端技术学院-task1.8源代码
- [Awt]——图片获取方式
- ftp连接不上的问题
- 多态的详细介绍
- JVM内存划分
- Json 和 Jsonlib 的使用
- 安卓应用反编译(三)-结束
- KMP算法
- C++将结构体传给lua
- 关于消息队列的应用中提示问题
- android手机推送消息 (百度云推送)
- 再识Quartz
- PHP随机显示mysql数据库中的数据
- 很全的demo,包括调用系统相机全屏拍照并保存,访问系统相册,多项保存照片。
- Inventor API: 如何在工程图里显示装配不同详细等级(LOD)的重量
- 如何在Android Studio中添加多个项目
- 字符串的最小表示--nkoj2973质检员
- awk用法