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

做课题查新网站北京网站建设 优化

做课题查新网站,北京网站建设 优化,电影网站做cpa,所有购物网站的名字实际上string没什么可讲,主要是对string函数的运用与理解,与其写库函数如何用,不如直接去看c库函数来得好。 以下是自己实现string功能函数。但没对string库中的全部函数进行实现,而是实现主要使用的。 .cpp内是用来测试函数功能…

实际上string没什么可讲,主要是对string函数的运用与理解,与其写库函数如何用,不如直接去看c++库函数来得好。

以下是自己实现string功能函数。但没对string库中的全部函数进行实现,而是实现主要使用的。

.cpp内是用来测试函数功能是否正确。

.h内是用来实现string

.CPP

#include"String.h"int main()
{moxuan::string s1;cout << s1.c_str() << endl;moxuan::string s2("abcd");cout << s2.c_str() << endl;//s1 = s2;cout << s1.c_str() << endl;cout << s2.c_str() << endl;s2.push_back('a');s2.append("11223344");cout << s2.c_str() << endl;//s1.push_back('a');s1.append("aabbccdd");cout << s1.c_str() << endl;s1.resize(10, 'a');cout << s1.c_str() << endl;s2.resize(20, 'v');cout << s2.c_str() << endl;s1 += 'a';s1.push_back('a');cout << s1.c_str() << endl;s2 += "99887766";cout << s2.c_str() << endl;moxuan::string::iterator it = s2.begin();while(it!=s2.end()){cout << *it;*it++;}cout << endl;moxuan::string::const_iterator cit = s2.begin();while (cit != s2.end()){cout << *cit;*cit++;}cout << endl;s2.inster(100, 'a');for (auto ch:s2){cout << ch;}cout << endl;s2.inster(0, 'p');s2.inster(24, 'G');for (auto ch : s2){cout << ch;}cout << endl;s2.inster(100, "ooooooo");s2.inster(0, "kkkkkk");s2.inster(12, "yyyyyyy");for (auto ch : s2){cout << ch;}cout << endl;s2.erase(0, 5);for (auto ch : s2){cout << ch;}cout << endl;cout << s2 << endl;moxuan::string s3;cin >> s3;cout << s3;return 0;
}

.h

#define CRT_SECURE_NO_WARNINGS
#pragma once
#include<iostream>
#include<string>
#include<assert.h>
using namespace std;namespace moxuan
{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;}//s("abc")string(const char* s = ""):_size(strlen(s)), _capacity(_size){_str = new char[_capacity + 1];strcpy(_str, s);}//s(s1)string(const string& s):_size(s._size), _capacity(s._capacity){_str = new char[_capacity + 1];strcpy(_str, s._str);}//s=s1string& operator=(const string& s){if (this != &s){_size = s._size;_capacity = s._capacity;char* tmp = new char[_capacity + 1];delete[]_str;strcpy(tmp, s._str);_str = tmp;}return *this;}~string(){if (_str){delete[]_str;_str = nullptr;_size = _capacity = 0;}}const char* c_str() const{return _str;}char& operator[](size_t n){assert(n <= _capacity);return _str[n];}size_t size()const{return _size;}size_t capacity()const{return _capacity;}string& operator+=(const char ch){push_back(ch);return *this;}string& operator+=(const char* s){append(s);return *this;}//扩容void reserve(size_t n){if (n > _capacity){char* tmp = new char[n+1];strcpy(tmp, _str);delete[]_str;_str = tmp;_capacity = n;}}void push_back(const char ch){if (_size == _capacity){reserve(_capacity == 0 ? 4 : _capacity * 2 + 1);}_str[_size] = ch;_str[++_size] = '\0';}void append(const char* s){size_t len = _size + strlen(s);if (len > _capacity){reserve(len);}strcpy(_str+_size, s);_size = len;}void resize(size_t  n, const char ch){if (n < _size){_size = n;_str[n] = '\0';}else{if (n > _capacity){reserve(_capacity * 2);}for (size_t i = _size; i <n; i++){_str[i] = ch;}_size = n;_str[_size] = '\0';}}string& inster(size_t pos,const char ch){if (_size == _capacity){reserve(_capacity == 0 ? 4 : _capacity * 2);}if (pos >= _size){_str[_size] = ch;}else{size_t end = _size+1;while (pos < end){_str[end] = _str[end-1];--end;}_str[pos] = ch;}++_size;_str[_size] = '\0';return *this;}string& inster(size_t pos,const char* str){size_t len = strlen(str);if (_size + len > _capacity){reserve(_size + strlen(str));}if (pos >= _size){this->append(str);}else{size_t end = _size + len+1;while (pos < end){_str[end] = _str[end-len];--end;}strncpy(_str+pos,str,len);_size += len;++_size;_str[_size] = '\0';}return *this;}void erase(size_t pos, size_t len=npos){assert(pos < _size);if (pos == npos || pos + len > _size){_str[pos] = '\0';_size = pos;}else{size_t end = pos + len;while (end <= _size){_str[end - len] = _str[end];++end;}_size -= len;_str[_size] = '\0';}}size_t find(char ch,size_t pos = 0){for (; pos <= _size; pos++){if (_str[pos] == ch){return pos;}}}size_t find(char* str, size_t pos = 0){const char* p = strstr(_str + pos, str);if (p == nullptr){return npos;}else{return p - _str;}}private:char* _str;size_t _size;size_t _capacity;const static size_t npos;};const size_t string::npos = -1;ostream& operator<<(ostream& out,const string& s){for (auto ch : s){out << ch;}return out;}istream& operator>>(istream& in, string& s){//这里创建数组为了防止单一的实现,重复调用。通过提取放入数组,结束再赋值。提高效率char ch;ch = in.get();char buff[128] = { '\0' };size_t i = 0;while (ch != ' ' && ch != '\n'){buff[i++] = ch;if (i == 127){s += buff;memset(buff, '\0', 128);i = 0;}ch = in.get();}s += buff;return in;}bool operator<(const string& s1, const string& s2){return strcmp(s1.c_str(), s2.c_str()) < 0;}bool operator==(const string& s1, const string& s2){return strcmp(s1.c_str(), s2.c_str()) == 0;}bool operator<=(const string& s1, const string& s2){return s1 < s2 || s1 == s2;}bool operator>(const string& s1, const string& s2){return strcmp(s1.c_str(), s2.c_str()) > 0;}bool operator>=(const string& s1, const string& s2){return s1 > s2 || s1 == s2;}bool operator!=(const string& s1, const string& s2){return !(s1 == s2);}
};

http://www.yayakq.cn/news/843720/

相关文章:

  • 做网站的技术员购物网站开发费用
  • 专业网站设计 软件子网站建设工作
  • 一个网站要多大的空间微信上的网站怎么做
  • 莱州网页制作南宁网站的优化
  • 广州站是哪个站建设电商网站的总结报告
  • 公司网站公司网站怎么能在百度上做推广
  • 抖音代运营合同模板免费下载山东进一步优化
  • 网站服务器备案查询网站备案百度网站收录
  • 广州建设银行分行招聘网站展示型企业网站开发
  • 商丘做网站公司新站seo快速收录网站内容页wordpress的根目录
  • 中国南昌网站建设胶南网站建设哪家好
  • 成都企业网站优化服务wordpress启动广告
  • 最好的做法福州seo网站推广
  • 专业手机网站建设价格php网站开发岗位要求
  • 建外贸网站公司全球十大建筑设计事务所
  • php快速建网站wordpress网站能APP吗
  • 怎么查看网站有没有做推广wordpress设置插件
  • 企业网站升级wordpress添加导航首页
  • 龙山建设集团有限公司网站seo优化方案执行计划
  • 好网站开发培训资源网站如何做
  • 哪家网站建设建立网站心得
  • 做网站网页维护手机App开发课程精品网站开发
  • 网站全能空间阿里云ace搭建wordpress
  • 长春做网站用的软件京津冀协同发展规划纲要全文
  • 沁县网站建设网站优化工具
  • 网站提取规则怎么设置建设宠物食品网站的功能定位
  • 做外汇看哪些网站数据河北邯郸永利ktv视频
  • 做哪个网站的推广最好网站建设按年收费吗
  • 域名cn是个什么网站Wordpress主题 修改 价钱
  • 网站建设与维护就业怎么样水冶那里有做网站的