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

作业0829

仿照string类,实现myString

#ifndef MYSTRING_H
#define MYSTRING_H
#include <iostream>using namespace std;class myString
{private:char *str;//记录c风格的字符串int size = 0; //记录字符串的实际长度int capacity = 0;//字符串的最大容量public://无参构造myString();//有参构造myString(const char *s);//有参构造     string  s("hello wirld");//判空函数bool empty();//返回当前对象分配的存储空间能保存的字符数量int get_capacity();//size函数int get_size();//c_str函数char *c_str();//at函数char &at(int index);//push_backbool push_back(const char ch);//二倍扩容void expend();
};#endif // MYSTRING_H
#include "myString.h"//无参构造
myString::myString():size(10), capacity(10)
{str = new char[size];
}
//有参构造
myString::myString(const char *s)//有参构造     string  s("hello world");
{for(int i=0; size = i, s[i] != 0; i++);str = new char[size+1];memcpy(str, s, size);str[size] = '\0';capacity = size;
}//判空函数
bool myString::empty()
{return size == 0;
}//返回当前对象分配的存储空间能保存的字符数量
int myString::get_capacity()
{return capacity;
}//size函数
int myString::get_size()
{return size;
}//c_str函数
char *myString::c_str()
{return str;
}//at函数
char& myString::at(int index)
{return str[index];
}//push_back
bool myString::push_back(const char ch)
{if(capacity == size){expend();}at(size) = ch;size++;return true;
}//二倍扩容
void myString::expend()
{capacity *= 2;char *temp = new char[capacity];memcpy(temp, str, size);delete []str;str = temp;
}
#include "myString.h"int main()
{myString str("hello");cout << str.at(2) << endl;cout << "字符串实际长度为:" << str.get_size() << endl;cout << "字符串容量为:" << str.get_capacity() << endl;str.at(0) = 'H';cout << "str = " << str.c_str() << endl;str.push_back('A');cout << "str = " << str.c_str() << endl;cout << "字符串实际长度为:" << str.get_size() << endl;cout << "字符串容量为:" << str.get_capacity() << endl;return 0;
}

思维导图:

 


http://www.mrgr.cn/news/14775.html

相关文章:

  • 如何利用 Go 语言开发高可用服务
  • 第一个go程序
  • 【LeetCode Cookbook(C++ 描述)】平衡二叉树
  • 使用 `free -m` 命令查看 Linux 系统内存状态
  • PWE3简介
  • 基于SSM+小程序的乡村游小程序登录管理系统(旅游3)(源码+sql脚本+视频导入教程+文档)
  • Cmake教程之一(入门Cmake基础命令)
  • pnpm 查看库的所有版本
  • 005-CircuitBreaker断路器-Resilience4J
  • Mozilla为本地音频到文本翻译开发Whisperfile引擎
  • 力扣1442.形成两个异或相等数组的三元组数目
  • Web之tomcat
  • 王立铭脑科学50讲,50、现在和未来,脑机接口能否带来脑的升级
  • node.js使用express框架实现api接口开发(从零开始,超简单可直接复制)
  • 企业数字化转型的简介、发展及未来趋势
  • CocosCreator 3.8 IOS 热更新失败问题解决方案
  • Java的GC(Garbage Collection,垃圾回收)
  • Queues
  • 【Docker安装】
  • 驱动开发系列12 - Linux Graphics 图形驱动概述(一)