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;
}


C++ string函数 与 C字符串处理函数(整理)

C++ string 函数 1、string类的构造函数: string(const char *s);    //用c字符串s初始化 string(int n,char c);     /...
  • cabinriver
  • cabinriver
  • 2013年05月17日 10:50
  • 8368

C++中对字符串进行插入、替换、删除操作

#include #include using std::cout; using std::endl; using std::cin; using std::string; int main(vo...
  • u010142437
  • u010142437
  • 2014年06月13日 13:58
  • 9462

Unix/Linux C++应用开发-标准库字符串string类

针对字符串处理,C++中并没有专门的内置类型。C语言是使用字符数组以及相应的指针来表示字符串。前面章节已经介绍了C++包容的C语言字符串处理方式。下面将讲解C++标准库封装字符串处理的字符串类类型。通...
  • wangfengwf
  • wangfengwf
  • 2013年09月11日 21:11
  • 9300

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

首先看一下以下这个程序:void printnum (long n) { if (n < 0) { putchar('-'); n = -n; ...
  • talent_CYJ
  • talent_CYJ
  • 2016年05月19日 16:34
  • 349

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

  • 2013年09月15日 13:22
  • 3KB
  • 下载

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

/**************************************** * File Name : deblank.c * Creat Data : 2015.1.19 * Aut...
  • qaz3171210
  • qaz3171210
  • 2015年01月19日 19:17
  • 447

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

字符串可以用字符数组与字符串变量两种方式来存储,效果类似。 一、用字符数组来存储字符串:  char st1[100],st2[100] ; //字符数组说明 cin>>st1>>st2; l...
  • LazyLeland
  • LazyLeland
  • 2014年01月29日 13:40
  • 570

翻转字符串的单个字符

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

单个字符提取参考程序

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

java 提取单个字符

  • 2010年06月18日 17:10
  • 59KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++【String类】String头插单个字符,头删单个字符的函数实现
举报原因:
原因补充:

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