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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++String类String删除单个字符,删除字符串的函数实现相关的知识,希望对你有一定的参考价值。

#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删除单个字符,删除字符串的函数实现的主要内容,如果未能解决你的问题,请参考以下文章

C++String类String查找单个字符,查找字符串的函数实现

删除单个元类方法

SQL String - 删除2次出现之间的子字符串

C++string字符串查找替换比较提取插入和删除

R语言unlist函数将复杂数据(list列表dataframe字符串String)对象处理成简单向量vector形式:将包含dataframe和字符串的向量列表转换为单个向量(删除数据名称)

C# String 删除两个字符之间的字符