您的位置:首页 > 编程语言 > C语言/C++

C++【String类】String删除单个字符,删除字符串的函数实现

2016-01-27 11:32 661 查看
#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 单个字符