#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类】String头插单个字符,头删单个字符的函数实现
原文:http://10740184.blog.51cto.com/10730184/1739118