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

来源:互联网 发布:陶哲轩智商知乎 编辑:程序博客网 时间:2024/06/06 12:49
#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;}


0 0
原创粉丝点击