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

【C++】仿照string类,实现myString

仿照string类,实现myString

main.c

#include"myString.h"int main()
{myString s1("hello world");cout<<"字符串长度位:"<<s1.str_size()<<" C语言格式输出"<<s1.c_str()<<endl;cout<<"第7个字符是:";s1.at(7);s1.set("zxy是最帅的人不接受反驳");//修改字符串s1.show();//查看是否修改成功return 0;
}

myString.c

#include"myString.h"
//判空函数
bool myString::empty()
{return size;
}
//set函数修改字符串的内容
void myString::set(const char *s)
{strcpy(str,s);//复制内容expend();//判断是否需要扩容strcpy(str,s);//如果扩容代表第一次可能没复制成功,重新复制一边
}
//size函数
int myString::str_size()
{return strlen(str);
}
//c_str函数
const char* myString::c_str()
{expend();str[str_size()]= '\0';return str;
}
//at函数
myString &myString::at(int index)
{if(index < 1 || index > str_size()){cout<<"下标不合理"<<endl;}expend();cout<<str[index-1]<<endl;
}
//二倍扩容
void myString::expend()
{char *temp;//说明申请的空间已经用完了,需要扩容if(str_size() >= size){size = size*2;temp = new char[size];strcpy(temp,str);delete str;str = temp;}
}
//展示函数
void myString::show()
{cout<<str<<endl;
}

myString.h

#ifndef MYSTRING_H
#define MYSTRING_H
#include <iostream>
#include<cstring>
using namespace std;
class myString
{
private:char *str;   //记录字符串int size;    //记录字符串的长度public:myString():size(10){str = new char[size];//堆区申请空间大小为size}//有参构造myString(const char *s)  //有参构造{size = strlen(s);str = new char[size];strcpy(str,s);}//判空函数bool empty();//set函数修改字符串的内容void set(const char *s);//size函数int str_size();//c_str函数const char* c_str();//at函数myString &at(int index);//二倍扩容void expend();//展示函数void show();
};
#endif // MYSTRING_H

运行效果展示


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

相关文章:

  • swf怎么转换成mp4格式?视频格式转换,就看这2个办法
  • 算法day15|513.找树左下角的值、112. 路径总和、113.路径总和Ⅱ、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树
  • 【ceph学习】rgw网关进程如何启动
  • 网页正文提取算法:行块分布算法 Readability
  • 华清远见元宇宙实验中心,开启嵌入式、物联网与人工智能教学新篇章
  • Bonree ONE 3.0发布会下一站 9月6日广州见!
  • ts转mp4怎么转?分享3个方法,快速搞定
  • 深入理解Seaborn库的高级功能(二)
  • 口语笔记——虚拟语气
  • LabVIEW性能优化方法
  • 路由懒加载
  • http发送邮件:如何用HTTP请求发送和发送?
  • CSS3中的字体详解
  • 如何通过日志或gv$sql_audit,分析OceanBase运行时的异常SQL
  • 数字滤波器中的数字频率转换成模拟频率
  • 读书笔记:《深入理解Java虚拟机》(4)
  • Kafka日志及常见问题
  • Java新手零基础教程!Java 异常详解.^◡^.
  • Golang学习总结
  • IO进程day05(线程、同步、互斥、条件变量、进程间通信IPC)