请设计一个简单字符串类 (CSimpleString),使 CSimpleString 对象比普通的字符(char)数组更安全、更易于使用。 a) 功能说明:CSimpleString 对一个可变长度字符串(char *)数据进行封装,提供字 符串的存储分配和释放;提供基于字符串数据的通用操作和运算符重载。构造函数和析构函数。CSimpleString 提供 3 种构造函数: 1. 空构造函数:创建一个空字符串对象。 例:CSimpleString str; 2. 接收一个字符串指针(char *)的构造函数:使用一个已知的字符串构造 对象。 例:CSimpleString str(“abc”); 3. 拷贝构造函数:可以用一个 CSimpleString 对象构造另一个 CSimpleString 对象。 例:CSimpleString str0(“abc”); CSimpleString str(str0);字符串+、+=重载

时间: 2024-02-27 20:58:35 浏览: 69
的实现:CSimpleString 支持字符串的加法运算符和加等运算符,它们都是用来连接两个字符串的。 例:CSimpleString str1(“abc”); CSimpleString str2(“def”); CSimpleString str3 = str1 + str2; // str3 等于 “abcdef” str1 += str2; // str1 等于 “abcdef” b) 类定义如下: ```c++ class CSimpleString { public: // 构造函数 CSimpleString(); CSimpleString(const char* str); CSimpleString(const CSimpleString& other); // 析构函数 ~CSimpleString(); // 运算符重载 CSimpleString operator+(const CSimpleString& other) const; CSimpleString& operator+=(const CSimpleString& other); // 成员函数 const char* GetString() const; int GetLength() const; void SetString(const char* str); void Clear(); private: char* m_pData; int m_nLength; }; ``` 其中,`m_pData` 存储字符串的指针,`m_nLength` 存储字符串的长度。构造函数和析构函数的实现如下: ```c++ CSimpleString::CSimpleString() { m_pData = new char[1]; m_pData[0] = '\0'; m_nLength = 0; } CSimpleString::CSimpleString(const char* str) { if (str == nullptr) { // 空指针 m_pData = new char[1]; m_pData[0] = '\0'; m_nLength = 0; } else { int len = strlen(str); m_pData = new char[len + 1]; strcpy(m_pData, str); m_nLength = len; } } CSimpleString::CSimpleString(const CSimpleString& other) { int len = other.GetLength(); m_pData = new char[len + 1]; strcpy(m_pData, other.GetString()); m_nLength = len; } CSimpleString::~CSimpleString() { delete[] m_pData; } ``` 加法运算符和加等运算符的实现如下: ```c++ CSimpleString CSimpleString::operator+(const CSimpleString& other) const { CSimpleString result; result.m_nLength = m_nLength + other.m_nLength; result.m_pData = new char[result.m_nLength + 1]; strcpy(result.m_pData, m_pData); strcat(result.m_pData, other.m_pData); return result; } CSimpleString& CSimpleString::operator+=(const CSimpleString& other) { int newLength = m_nLength + other.m_nLength; char* newData = new char[newLength + 1]; strcpy(newData, m_pData); strcat(newData, other.m_pData); delete[] m_pData; m_pData = newData; m_nLength = newLength; return *this; } ``` 其他成员函数的实现如下: ```c++ const char* CSimpleString::GetString() const { return m_pData; } int CSimpleString::GetLength() const { return m_nLength; } void CSimpleString::SetString(const char* str) { if (str == nullptr) { // 空指针 Clear(); } else { int len = strlen(str); char* newData = new char[len + 1]; strcpy(newData, str); delete[] m_pData; m_pData = newData; m_nLength = len; } } void CSimpleString::Clear() { delete[] m_pData; m_pData = new char[1]; m_pData[0] = '\0'; m_nLength = 0; } ```
阅读全文

相关推荐

cpp