您的位置:首页 > 编程语言 > C语言/C++

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

2016-01-27 11:47 1241 查看
#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 字符