#include<iostream> #include<stdlib.h> #include<assert.h> using namespace std; class String { public: String(const char* str) :_str(new char[strlen(str) + 1]) { _size = strlen(str); _capacity = _size + 1; strcpy(_str, str); } String(const String& s) :_str(NULL) { String tmp(s._str); swap(_str, tmp._str); } ~String() { if (_str) { delete[] _str; _size = 0; _capacity = 0; _str = NULL; } } //删除单个字符 /*void Erase(size_t pos) { assert(pos <=_size); //pos>_size报错 int begin = pos; while (begin <= _size) { _str[begin] = _str[begin + 1]; begin++; } --_size; }*/ //删除字符串 void Erase(size_t pos, int len) { assert(pos <= _size); int len1 = len + 1; while (len1--) { _str[pos] = _str[pos + len +1]; pos++; } _size = _size - len; } char* C_str() { return _str; } private: char* _str; int _size; int _capacity; }; void Test() { String s("abcdefghijk"); s.Erase(2,4); cout << s.C_str() << endl; } int main() { Test(); system("pause"); return 0; }
C++【String类】String删除单个字符,删除字符串的函数实现
原文:http://10740184.blog.51cto.com/10730184/1739019