首页 > 编程语言 > 详细

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

时间:2016-01-27 17:39:30      阅读:222      评论:0      收藏:0      [点我收藏+]
#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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!