#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;
}
转载于:https://blog.51cto.com/10740184/1739019