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

如何在百度上做公司网站怎末把域名装wordpress

如何在百度上做公司网站,怎末把域名装wordpress,合肥高端品牌网站建设,枣阳网站开发公司哪家好文章目录 string类构造string类拷贝构造string类析构string类运算符重载string类部分常用接口的模拟实现 这篇博客中构造、拷贝构造、析构、还有一些短小频繁调用的函数就不用做函数和定义分离#xff0c;因为在类中#xff0c;这种函数会默认是内联函数 string类构造 构造函… 文章目录 string类构造string类拷贝构造string类析构string类运算符重载string类部分常用接口的模拟实现 这篇博客中构造、拷贝构造、析构、还有一些短小频繁调用的函数就不用做函数和定义分离因为在类中这种函数会默认是内联函数 string类构造 构造函数有一些容易忽略的细节我会在下面的代码注释中说明 #includeiostream #includeassert.h #includestring.h using namespace std; namespace sg {class string{public:string()//:_str(nullptr) // 不能这么写因为当我string对象为空程序解引用到\0才会终止遇不到就会崩溃:_str(new char[1]{\0}) // 空间里至少要有一个字符, _size(0), _capacity(0){}//构造函数string(const char* str){_size strlen(str);_capacity strlen(str);_str new char[strlen(str) 1];strcpy(_str, str);}private:char* _str;size_t _size;size_t _capacity;};void test_string1();}还有另一种写法不用初始化直接在构造函数的参数给上缺省值 /*string():_str(new char[1]{\0}), _size(0), _capacity(0) {}*/ //构造函数 //string(string(const char* str nullptr) // 如果参数又给空程序还是会崩C语言规定常量字符串后面都会有\0,所以直接给空字符串就行 string(const char* str ) {_size strlen(str);_capacity strlen(str);_str new char[strlen(str) 1];strcpy(_str, str); }string类拷贝构造 如果使用默认拷贝构造会引发浅拷贝问题就是当两个对象指向同一块资源时释放资源后会导致一块资源被析构两次程序会报错。所以自己写一个深拷贝最好 //拷贝构造函数 //s2(s1) string(const string s)// this就是s2 {_str new char[s._capacity 1]; // 开一个和s1一样大的空间strcpy(_str, s._str); _size s._size;_capacity s._capacity; }string类析构 string的析构和c语言栈实现中的销毁栈大差不差如果有疑问可以参考这一篇博客 C语言栈和队列 //析构函数 ~string() {if (_str) //检查一下_str是否为空如果为空就不用再释放空间了{delete[] _str;_str nullptr;_size _capacity 0;} }string类运算符重载 string.h char operator[](size_t pos) {assert(pos _size);return _str[pos]; } const char operator[](size_t pos) const {assert(pos _size);return _str[pos]; }string.cpp #define _CRT_SECURE_NO_WARNINGS 1 #include practice-string.h namespace sg {void test_string1(){string s1;string s2(hello world);cout s1.c_str() endl;cout s2.c_str() endl;for (size_t i 0; i s2.size(); i){s2[i] 2;}for (auto e : s2){cout e ;}cout endl;cout s2.c_str() endl;} }我通过测试发现并不能用范围for遍历报错显示未找到匹配的begin函数需要我们自己实现 范围for看着很方便但本质就是迭代器迭代器模拟的是指针的行为所以我们返回原生指针即可 string.h typedef char* iterator; typedef 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 operator(const string s) {if (this ! s)//地址相同就是自己赋值给自己{delete[] _str;_str new char[s._capacity 1];strcpy(_str, s._str);_size s._size;_capacity s._capacity;}return *this; }string类部分常用接口的模拟实现 string.h #pragma once #includeiostream #includeassert.h #includestring.h using namespace std; namespace sg {class string{public:typedef char* iterator;typedef 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():_str(new char[1]{\0}), _size(0), _capacity(0){}*///构造函数string(const char* str ){_size strlen(str);_capacity strlen(str);_str new char[strlen(str) 1];strcpy(_str, str);}//析构函数~string(){delete[] _str;_str nullptr;_size _capacity 0;}//拷贝构造函数//s2(s1)string(const string s){_str new char[s._capacity 1];strcpy(_str, s._str);_size s._size;_capacity s._capacity;}const char* c_str() const{return _str;}size_t size() const{return _size;}char operator[](size_t pos){assert(pos _size);return _str[pos];}const char operator[](size_t pos) const{assert(pos _size);return _str[pos];}// s2 s1// s1 s1string operator(const string s){if (this ! s)//地址相同就是自己赋值给自己{delete[] _str;_str new char[s._capacity 1];strcpy(_str, s._str);_size s._size;_capacity s._capacity;}return *this;}void clear(){_str[0] \0;_size 0;}void reserve(size_t n);void push_back(char ch);void append(const char* str);string operator(char ch);string operator(const char* str);void insert(size_t pos, char ch);void insert(size_t pos, const char* str);void erase(size_t pos, size_t len npos);size_t find(char ch, size_t pos 0);size_t find(const char* str, size_t pos 0);string substr(size_t pos 0, size_t len npos);private:char* _str;size_t _size;size_t _capacity;static const size_t npos;};void test_string1();void test_string2();bool operator(const string s1, const string s2);bool operator(const string s1, const string s2);bool operator(const string s1, const string s2);bool operator(const string s1, const string s2);bool operator!(const string s1, const string s2);bool operator(const string s1, const string s2);ostream operator(ostream out, const string s);istream operator(istream in, string s); } string.cpp #define _CRT_SECURE_NO_WARNINGS 1 #includestring.h namespace sg {const size_t string::npos -1;//声明和定义分离void string::reserve(size_t n){if (n _capacity){char* tmp new char[n 1];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;}void string::append(const char* str){size_t len strlen(str);if (_size len _capacity){//大于二倍需要多少开多少小于二倍就按二倍扩reserve(_size len 2 * _capacity ? _size len : 2 * _capacity);}strcpy(_str _size, str);//从\0开始拷贝\0会自动被挤到后面_size len;}string string::operator(const char* str){append(str);return *this;}void string::insert(size_t pos, char ch){assert(pos _size);if (_size _capacity){reserve(_capacity 0 ? 4 : _capacity * 2);}//挪动数据/*size_t end _size;while (end pos){_str[end 1] _str[end];--end;}*///挪动数据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);if (_size _capacity){reserve(_capacity 0 ? 4 : _capacity * 2);}size_t len strlen(str);size_t end _size len;while (end pos len){_str[end] _str[end - len];--end;}for (size_t i 0; i len; i){_str[pos i] str[i];}_size len;}void string::erase(size_t pos, size_t len){if (len _size - pos){_str[pos] \0;_size pos;}else{for (size_t i pos len; i _size; i){_str[i - len] _str[i];}_size - len;}}size_t string::find(char ch, size_t pos){assert(pos _size);for (size_t i pos; i _size; i){if (_str[i] ch){return i;}}return npos;}size_t string::find(const char* str, size_t pos){assert(pos _size);const char* ptr strstr(_str pos, str);if (ptr nullptr){return npos;}else{return ptr - _str;}}string string::substr(size_t pos 0, size_t len){assert(pos _size);if (len _size - pos){len _size - pos;}string sub;sub.reserve(len);for (size_t i 0; i len; i){sub _str[pos i];}return sub;}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);}bool operator(const string s1, const string s2){return !(s1 s2);}bool operator!(const string s1, const string s2){return !(s1 s2);}bool operator(const string s1, const string s2){return strcmp(s1.c_str(), s2.c_str()) 0;}ostream operator(ostream out, const string s){for (auto ch : s){out ch;}return out;}istream operator(istream in, string s){s.clear();//创造一块缓冲const int N 256;char buffer[N];int i 0;char ch;ch in.get();while (ch ! ch ! \0){buffer[i] ch;if (i N - 1)// buffer条件{buffer[i] \0;s buffer;i 0;}if (i 0){buffer[i] \0;s buffer;}return in;}}void test_string1(){string s1;string s2(hello world);cout s1.c_str() endl;cout s2.c_str() endl;for (size_t i 0; i s2.size(); i){s2[i] 2;}cout s2.c_str() endl;}void test_string2(){string s1(hello world);s1 !;s1 #;cout s1.c_str() endl;s1 renqing;cout s1.c_str() endl;s1.insert(0, #);cout s1.c_str() endl;string s2(hello world);s2.insert(5, big);cout s2.c_str() endl;s2.erase(5, 3);cout s2.c_str() endl;}}test.cpp #define _CRT_SECURE_NO_WARNINGS 1 #includestring.h int main() {//sg::test_string1();sg::test_string2();return 0; }
http://www.hkea.cn/news/14536369/

相关文章:

  • 东莞建网站北京网站设计引流微信hyhyk1
  • ftp网站地图怎么做河南中原建设公司网站
  • 个人网站备案名称填写wordpress后台的使用技巧
  • 家纺公司网站模版google建站推广
  • 成全视频免费观看在线观看高清动漫郑州企业网站优化多少钱
  • 上海网站建设门户在线教育网站建设投标书
  • 网站首页作用网创项目资源网站
  • 加强廉政教育网站建设滨州建设网站
  • 网站建设的一般过程包括哪些方面anaconda可以做网站吗
  • 软件 网站模板长沙正规官网建站
  • 网站主机域名子域名网站二级
  • 广东快速做网站公司哪家好网络设计与管理是干什么的
  • 长春网站建设SEO优化营销做电脑网站手机能显示不出来怎么办啊
  • 你知道吗网站优化要多少钱
  • 国外域名注册网站 中文网站中文域名好不好
  • 黄金网站app视频下载小说微商系统
  • 错题网站开发四川网站建设制作
  • 在百度做网站多少钱wordpress 链接小图标
  • 杭州做网站好的公司排名wordpress 分类函数
  • 沈阳做网站优化哪家好做网站流量钱谁给
  • pytson做网站安全吗重庆市建设工程信息网上查询
  • 福田做网站优化乐云seo微官网和小程序有什么区别
  • 做搜狐网站页面石家庄seo网站推广
  • 马鞍山网站开发番禺做网站哪家强
  • 海外海外网站建设wordpress模板大全
  • 在百度上注册公司网站要多少钱二级网站域名解析
  • 济南外贸网站保定网络营销推广
  • 哪里有手机网站建设联系方式网站未经授权推广别人的产品
  • 广州知名网站建设性价比高网站名称怎么变更
  • 网站 建设后台WordPress知更鸟主题怎样安装