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

原创 2016年05月30日 17:16:41
#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对象删除特定字符/子串小方法

自己在做的字符串的时候遇到要删除子串.. 百度无果,论坛里到是有讨论到.. 自己看评论写了一下.. 其实挺简单的... 1、利用find函数找到首次出现的位置!!!记住是首次,后面的要用迭代删...
  • jaygold
  • jaygold
  • 2013年11月29日 11:45
  • 12681

C++从string中删除所有的某个特定字符

C++中要从string中删除所有某个特定字符, 可用如下代码 str.erase(std::remove(str.begin(), str.end(), 'a'), str.end()); ...
  • wodeai1235
  • wodeai1235
  • 2017年01月28日 15:58
  • 2621

[c++]string中删除相同字符

// string的某一个迭代器被erase后,这个迭代器自动++; #include #include #include using namespace std; int main() { ...
  • stary_yan
  • stary_yan
  • 2016年02月25日 15:48
  • 1029

C++学习记录11--字符串中删除特定元素

C++学习记录10
  • tmxk13
  • tmxk13
  • 2017年03月15日 20:59
  • 840

C++ string字符串的增删改查

转载请标明出处: http://blog.csdn.net/u011974987/article/details/52505004 本文出自:【徐Xiho的博客】 c++ 提供的stri...
  • u011974987
  • u011974987
  • 2016年09月11日 17:46
  • 2513

C++:如何删除string对象的末尾非数字字符

功能实现:实现删除string对象的末尾非
  • bendanban
  • bendanban
  • 2014年08月07日 21:22
  • 4631

由string删除某个字符的操作发现的一个问题

最近在看C++primer,3.2 标准库类型string有一个习题,写一个程序将输入的字符串中的符号删除后输出。我新建了一个字符串接收非符号的字符串,但是最后输出结尾部分总是多一个a。#includ...
  • u012043313
  • u012043313
  • 2015年05月17日 21:52
  • 886

c++在字符中删除指定字符串

#include #include #include using namespace std; void strdel(char *str,const char* pattern) { i...
  • yinhua405
  • yinhua405
  • 2017年06月18日 10:00
  • 376

c/c++整理--实现删除字符串所有指定字符

编程实现删除字符串中所有指定的字符 示例输入:cabcdefcgchci 示例输出:abdefghi #include #include #define N 20 char* deleteCha...
  • hjf161105
  • hjf161105
  • 2017年05月11日 23:55
  • 779

去掉std::string或std::wstring的最后一个字符的简单方法

s.pop_back(); s.erase(s.end()-1); s.substr(0,s.length()-1);
  • idkidknow
  • idkidknow
  • 2015年04月18日 18:45
  • 2721
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++【String类】String删除单个字符,删除字符串的函数实现
举报原因:
原因补充:

(最多只允许输入30个字)