本文共 2359 字,大约阅读时间需要 7 分钟。
扩展String类,引入头文件CString.h,它的内容如下:
#includeusing namespace std;class String {protected: char *mystr; int len;public: String(const char *p) { len = strlen(p); mystr = new char[len + 1]; strcpy(mystr, p); } ~String() { if (mystr != NULL) { delete[] mystr; mystr = NULL; len = 0; } } void showStr() { cout << mystr << endl; }};
实现int IsSubString(int start, const char *str):
int EditString::IsSubString(int start, const char *str) { int i, j; for (i = 0; i < len; i++) { int k = start + i; for (j = 0; str[j] != '\0'; j++, k++) { if (str[j] != mystr[k]) break; } if (str[j] == '\0') return start + i; } return -1;} 实现void EditChar(char s, char d):
void EditString::EditChar(char s, char d) { int i = 0; while (mystr[i]) { if (mystr[i] == s) { mystr[i] = d; } i++; }} 实现void EditSub(char * subs, char * subd):
void EditString::EditSub(const char *subs, const char *subd) { int i, j, len_s = strlen(subs), len_d = strlen(subd); for (i = 0; i < len; i++) { int k = i; for (j = 0; subs[j] != '\0'; j++, k++) { if (subs[j] != mystr[k]) break; } if (subs[j] == '\0') { int m = i + len_s; while (mystr[m - 1]) { mystr[m + len_d - len_s] = mystr[m]; m++; } m = 0; while (subd[m]) { mystr[i + m] = subd[m]; m++; } i += (len_d - 1); } }} 实现void DeleteChar(char ch):
void EditString::DeleteChar(char ch) { int i = 0; while (mystr[i]) { while (mystr[i] == ch) { int j = i; while (mystr[j]) { mystr[j] = mystr[j + 1]; j++; } } i++; }} 实现void DeleteSub(const char *sub):
void EditString::DeleteSub(const char *sub) { int i, j; for (i = 0; i < len; i++) { int k = i; for (j = 0; sub[j] != '\0'; j++, k++) { if (sub[j] != mystr[k]) break; } if (sub[j] == '\0') { int len = strlen(sub); int m = i + len; while (mystr[m - 1]) { mystr[m - len] = mystr[m]; m++; } } }} 转载地址:http://ivqg.baihongyu.com/