当前位置: 首页 > news >正文

网站建设合同范本最近国际时事热点事件

网站建设合同范本,最近国际时事热点事件,网站做下cdn,域名网站如何做实现string的模拟实现分为三个文件&#xff0c;分别为&#xff1a;string.h、sting.cpp、test.cpp string.h 其中包含一些短小常用的函数的实现&#xff0c;头文件&#xff0c;函数的声明 #include<iostream> #include<string> #include<assert.h>using n…

实现string的模拟实现分为三个文件,分别为:string.h、sting.cpp、test.cpp

string.h

其中包含一些短小常用的函数的实现,头文件,函数的声明

#include<iostream>
#include<string>
#include<assert.h>using namespace std;namespace stringbyself
{class string{public:typedef char* iterator;typedef const char* const_iterator;//编译器开始iterator begin(){return _str;}//编译器结束iterator end(){return _str + _size;}const_iterator begin() const{return _str;}const_iterator end() const{return _str+_size;}//构造函数string(const char* str = ""){_size = strlen(str);_capacity = _size;_str = new char(_size + 1);strcpy(_str, str);}//析构~string(){if (_str){delete[] _str;_str = nullptr;_size = _capacity = 0;}}//c_strconst char* c_str() const{return _str;}//clearvoid clear(){_str[0] = '\0';_size = 0;}//sizesize_t size() const{return _size;}//capacitysize_t capacity() const{return _capacity;}//[]char& operator[](size_t pos){assert(pos < _size);return _str[pos];}const char& operator[](size_t pos) const{assert(pos < _size);return _str[pos];}void reserve(size_t n);void push_back(char ch);string& operator+=(char ch);string& operator+=(const char* str);void append(const char* str);void insert(size_t pos, char ch);void insert(size_t pos, const char* str);private:char* _str = nullptr;size_t _size = 0;size_t _capacity = 0;static const size_t npos;};
}

string.cpp

实现以下函数:

  • reserve

为字符串预留空间。当需要空间大于字符串的空间时,需要开辟一块新的空间,将之前的空间进行释放,将新开辟的空间赋值给字符串,并修改_capacity的大小。

  • push_back

尾插字符。首先判断字符串空间是否足够,进行尾插,并修改_size的值以及将末尾添加’\0’

  • operator+=

在字符串后追加字符串。当添加的为字符时,直接调用push_back即可,并返回 * this指针;当返回的为字符串时,调用append即可,返回 * this指针

  • append

在字符串后追加一个字符串。先计算待插入的字符串长度;判断原有字符串加上待插入字符串是否会大于_capacity的大小,并对空间进行调整;进行插入并调整_size的大小即可

  • insert

在字符串中插入字符串或字符。当插入字符时,首先判断_capacity是否足够,并对空间进行调整;将数据进行挪动,然后插入数据,调整_size即可。当插入的为字符串时,先计算待插入的字符串长度;判断原有字符串加上待插入字符串是否会大于_capacity的大小,并对空间进行调整;将数据进行挪动,然后插入数据,调整_size即可。

#include"string.h"namespace stringbyself
{static const size_t npos = -1;void string::reserve(size_t n){if (n > _capacity){char* tmp = new char[n + 1];//给'\0'多开辟一个空间strcpy(tmp,_str);delete[] _str;_str = tmp;_capacity = n;}}void string::push_back(char ch){if (_size == _capacity){reserve(_capacity == 0 ? 4 : _capacity * 2);}_str[_size] = ch;_size++;_str[_size] = '\0';}string& string::operator+=(char ch){push_back(ch);return *this;}string& string::operator+=(const char* str){append(str);return *this;}void string::append(const char* str){size_t len = strlen(str);if (_size + len > _capacity){reserve(_size + len > _capacity * 2 ? _size + len : _capacity * 2);}strcpy(_str + _size, str);_size = _size + len;}void string::insert(size_t pos, char ch){assert(pos <= _size);if (_size == _capacity){reserve(_capacity == 0 ? 4 : _capacity * 2);}size_t end = _size + 1;while (end > pos){_str[end] = _str[end - 1];--end;}_str[pos] = ch;_size++;}void string::insert(size_t pos, const char* str){assert(pos <= _size);size_t len = strlen(str);if (_size + len > _capacity){reserve(_size + len > _capacity * 2 ? _size + len : _capacity * 2);}size_t end = _size + len;while (end > pos + len - 1){_str[end] = _str[end - len];--end;}for (size_t i = 0; i < len; i++){_str[pos + i] = str[i];}_size += len;}
}

test.cpp

用于测试代码是否能完成相对的功能

#include"string.h"int main()
{string s1("hello world");cout << s1 << endl;string::iterator it = s1.begin();while (s1.end() != it){cout << *it << " ";it++;}cout << endl;cout << s1.size() << endl;cout << s1.capacity() << endl;s1.push_back('#');cout << s1 << endl;s1 += "&&&";cout << s1 << endl;s1 += '*';cout << s1 << endl;s1.append("@");cout << s1 << endl;s1.insert(0, "%");cout << s1 << endl;s1.insert(0, "$$$");cout << s1 << endl;return 0;
}

在这里插入图片描述

http://www.dinnco.com/news/59649.html

相关文章:

  • 怎么在携程旅行做网站长沙关键词优化公司电话
  • 玉树营销网站建设多少钱mac923水蜜桃923色号
  • 重庆沙坪坝做网站数据营销
  • 镜像网站能否做google排名海南seo顾问服务
  • 投资融资理财网站模板平台推广是什么意思
  • 做网站怎么接业务百度订单售后电话
  • 深圳做营销网站的公司简介百度指数分析平台
  • 可以做英文教师的网站网络营销平台推广方案
  • 网站开发体会范文宁波seo关键词如何优化
  • 制作网站和制作网页的分别千万不要做手游推广员
  • 定制型网站制作做网站seo怎么赚钱
  • 网站建设教程ppt百度seo刷排名软件
  • 手机做任务赚钱的网站保定seo推广
  • 做电商网站需要会些什么问题seo优化是什么
  • 西青网站建设最近大事件新闻
  • 网站制作高端网站建设爱站网关键词挖掘工具站长工具
  • 在猪八戒网站如何做兼职博客是哪个软件
  • 做网站的公司cnfg百度浏览器打开
  • wordpress手机版本惠州seo网站管理
  • 手工制作图片作品西安seo阳建
  • 怎样给公司做推广 网站精准客源app
  • 网站建设验收内容seo网站推广收费
  • 网站外链的优化方法图片识别 在线识图
  • 百度网址大全pc版怎么下载seo推广方式是什么呢
  • 济宁做网站哪家好拼多多搜索关键词排名
  • 物流网站做代理海南乐秀同城群软件下载
  • ui设计参考网站有哪些关键词优化seo优化
  • 购买网站服务器产品推广方案范文
  • 临桂建设局网站91永久海外地域网名
  • 创新的常州做网站seo工具