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

原创 2016年05月30日 17:16:47
#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;
}


相关文章推荐

将一个整数转换为单个字符输出函数实现的细节性问题

首先看一下以下这个程序:void printnum (long n) { if (n < 0) { putchar('-'); n = -n; ...

当函数发现字符串中如果有一个地方由一个或多个连续的空格组成,就把它们改成单个空格字符。

/**************************************** * File Name : deblank.c * Creat Data : 2015.1.19 * Aut...

C++ 字符数组函数与string函数

字符串可以用字符数组与字符串变量两种方式来存储,效果类似。 一、用字符数组来存储字符串:  char st1[100],st2[100] ; //字符数组说明 cin>>st1>>st2; l...

java 提取单个字符

  • 2010年06月18日 17:10
  • 59KB
  • 下载

翻转字符串的单个字符

  • 2014年04月07日 14:37
  • 944B
  • 下载

java-01-实现多行输入 并且以指定end 字符(串) 结束 并且查找指定的单个字符

import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Find_az { ...
  • jankin6
  • jankin6
  • 2016年11月08日 18:16
  • 745

单个字符提取参考程序

  • 2011年04月04日 12:09
  • 22KB
  • 下载

输出单个字符

  • 2014年04月11日 11:33
  • 290B
  • 下载

使用字符指针实现的一个简单string类

MyString.h #if !defined STRING_H #define STRING_H #include #include class MyString { //重载"
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++【String类】String头插单个字符,头删单个字符的函数实现
举报原因:
原因补充:

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