1 #include <iostream> 2 #include <windows.h> 3 4 using namespace std; 5 6 7 8 9 const int Max = 100000 +10; 10 class MyString 11 { 12 public: 13 14 15 MyString() 16 { 17 this -> m_pchData = new char[Max]; 18 this -> Length = 0; 19 20 } 21 void Init(char* a1) // 初识化 22 { 23 int l = strlen(a1); 24 this->Length = l; 25 memcpy(this->m_pchData,a1,l); 26 } 27 28 int GetLength() const 29 { 30 return this->Length; 31 } 32 33 bool IsEmpty() 34 { 35 if (this->Length==0) 36 return true; 37 else return false; 38 } 39 40 char GetAt(int nIndex) const 41 { 42 return this->m_pchData[nIndex-1]; 43 } 44 void Empty(); 45 MyString(const MyString& a1); 46 char operator[](int nIndex) const; 47 void SetAt(int nIndex, char a1) 48 { 49 if (nIndex>=this->Length||nIndex<0) 50 { 51 cout << "输入位置有误" << endl; 52 } 53 else 54 { 55 this->m_pchData[nIndex-1] = a1; 56 } 57 58 } 59 char* GetString () 60 { 61 return this->m_pchData; 62 } 63 int GetLength() 64 { 65 return this->Length; 66 } 67 68 69 const char* operator=(const char* stringSrc) 70 { 71 int l = strlen(stringSrc); 72 this->Length = l; 73 memset(this->m_pchData,0,sizeof(this->m_pchData)); 74 memcpy(this->m_pchData,stringSrc,l); 75 } 76 const char operator=(char a1) 77 { 78 this->Length = 1; 79 memset(this->m_pchData,0,sizeof(this->m_pchData)); 80 this->m_pchData[0] = a1; 81 82 } 83 const char* operator+=(const char* string) 84 { 85 int l = strlen(string) ; 86 for (int i = 0;i<l;i++) 87 { 88 this->m_pchData[this->Length+i] = string[i]; 89 } 90 this->Length += l; 91 92 } 93 const char* operator+=(char a1) 94 { 95 96 this->m_pchData[this->Length] = a1; 97 this->Length++; 98 } 99 int Replace(char lpszOld, char lpszNew) 100 { 101 for (int i = 0;i<this->Length;i++) 102 { 103 if (this->m_pchData[i]==lpszOld) 104 { 105 this->m_pchData[i] = lpszNew; 106 } 107 } 108 } 109 int Remove(char chRemove); 110 int Insert(int nIndex, char ch); 111 char* GetBuffer(int Index) 112 { 113 if (Index >= this->Length||Index<0) 114 { 115 cout << "输入有误" << endl; 116 } 117 else 118 { 119 int iNum = 0; 120 int b = this->Length-Index+1; 121 cout << b << endl; 122 char* a = new char[this->Length-Index+1]; 123 for (int i = Index-1;i<this->Length;i++) 124 { 125 a[iNum++] = this->m_pchData[i]; 126 } 127 128 return a; 129 } 130 131 } 132 private: 133 134 char* m_pchData; 135 int Length; 136 137 }; 138 VOID operator<<(ostream& os,MyString& a1) 139 { 140 cout << a1.GetLength() << endl; 141 cout << a1.GetString() << endl; 142 } 143 144 int main() 145 { 146 MyString mystring; 147 char a[200] = "Hello Worldddddddddddddddddddd"; 148 mystring.Init(a); 149 //cout << mystring.GetLength() << endl; 150 /* if (mystring.IsEmpty()) 151 { 152 cout << "Empty" << endl; 153 } 154 else 155 { 156 cout << "Not Empty" << endl; 157 } 158 159 cout << mystring.GetAt(3) << endl; 160 161 mystring.SetAt(3,'a'); 162 cout << mystring; 163 164 165 char a1[20] = "gnajhg"; 166 mystring += a1; 167 cout << mystring ; 168 */ 169 170 cout << mystring.GetBuffer(6) << endl; 171 cout << mystring ; 172 173 174 return 0; 175 }