关闭

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

87人阅读 评论(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])
    {
        strcpy(_str, str);
        _size = strlen(_str);
        _capacity = _size + 1;
    }

    String(const String& s)
    : _str(NULL)   //若不赋空则为随机值,随机值_str析构函数释放指针会崩溃
    {
        String tmp(s._str);     //重新开辟空间
        swap(_str, tmp._str);
    }

    ~String()
    {
        if (_str)
        {
            delete[] _str;
            _size = 0;
            _capacity = 0;
            _str = NULL;
        }
    }
    
    //PushBack
    void PushBack(char ch)
    {
        checkcapacity();
        this->_str[_size] = ch;
        _size++;
        this->_str[_size] = '\0';
    }
    
    //popback
    /*void PopBack()
    {
        assert(_size > 0);
        --_size;
        _str[_size] = '\0';
    }*/

    char* C_str()
    {
        return _str;
    }
private:
    char* _str;
    int _size;
    int _capacity;
};

//PushBack测试函数
void Test()
{
    char* s1 = "hello";
    String s(s1);
    s.PushBack(' ');
    s.PushBack('w');
    s.PushBack('o');
    s.PushBack('r');
    s.PushBack('l');
    s.PushBack('d');
    
    cout << s.C_str() << endl;
}

//PopBack测试函数
/*void Test()
{
    String s("hello");
    s.PopBack();
    s.PopBack();
    s.PopBack();
    s.PopBack();
    
    cout << s.C_str() << endl;
}*/


int main()
{
    Test();
    system("pause");
    return 0;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:54793次
    • 积分:660
    • 等级:
    • 排名:千里之外
    • 原创:174篇
    • 转载:9篇
    • 译文:0篇
    • 评论:2条
    关于博主
    github:https://github.com/hanxiaojing Email: hanjing_1995@163.com 原51.cto: http://10740184.blog.51cto.com 欢迎来访~
    文章分类
    最新评论