原因
因爲string預分配與SDS上比較有些不足,所以重新封裝了自己的字符串類String。
類的名稱(編號)
FDB_String.h
FDB_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對象。