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++实现JNI接口需要注意的事项
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- 关于指针的一些事情
- android上改变listView的选中颜色
- String.intern
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Prototype源码浅析 String部分(二)
- Ruby中的String对象学习笔记
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- PostgreSQL ERROR: invalid escape string 解决办法
- C#实现移除字符串末尾指定字符的方法
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题