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

Day01_C++编程

01.思维导图

02.

方法一:

#include <iostream>
#include <cstring>
#include <iostream>
using namespace std;
class mystring
{
private:char* buf;int len;public:mystring(const char* str);void copy(const char* ptr);void copy(mystring ptr);void append(const char* ptr);void append(mystring ptr);void compare(const char* ptr);void show(){cout << buf << endl;}
};
mystring::mystring(const char* str):len(strlen(str))
{buf=(char*)malloc(len+1);strcpy(buf,str);
}//复制字符串
void mystring::copy(const char* ptr)
{int i=0;len=strlen(ptr);while(ptr[i]!='\0'){buf[i]=ptr[i];i++;}buf[i]='\0';
}void mystring::copy(mystring ptr)
{int i=0;len=ptr.len;while(ptr.buf[i]!='\0'){buf[i]=ptr.buf[i];i++;}buf[i]='\0';
}
//追加字符串
void mystring::append(const char* ptr)
{int i=0,j=0;while(buf[i]!='\0'){i++;};for(;ptr[j]!='\0';j++,i++){buf[i]=ptr[j];}buf[i]='\0'; len=i;
}void mystring::append(mystring ptr)
{int i=len,j=0;while(ptr.buf[j]!='\0'){buf[i]=ptr.buf[j];i++;j++;
}
buf[i]='\0';
len=i;}
//主函数
int main()
{mystring str = "hello";str.show();mystring ptr = "world";str.copy(ptr);str.show();str.copy("你好");str.show();str.append(ptr);str.show();str.append("你好");str.show();
}

方法二:

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>using namespace std;
class mystring{
private://指向一个堆空间,该堆空间用来保存外部传入的字符串char* buf;int len;//记录buf里面保存的字符串有多少
public:mystring(const char* s){len=strlen(s);buf=(char*)malloc(len+1);strcpy(buf,s);}void copy(mystring s){len=s.len;char* str=s.buf;strcpy(buf,str);}void copy(const char* s){len=strlen(s);strcpy(buf,s);}void append(mystring s){len+=s.len;char* str=s.buf;strcat(buf,str);}void append(const char* s){int l=strlen(s);len+=l;strcat(buf,s);}int compare(mystring s){char* str=s.buf;return strcmp(buf,str);}int compare(const char* s){return strcmp(buf,s);}void show(){cout<<buf<<endl;}char at(int n){return buf[n];}};int main(int argc,const char** argv)
{mystring str="hello";//这段代码要求一定为mystring类写一个可隐式调用的单参构造函数mystring ptr="world";//在写单参构造函数的时候,私有成员len使用列表初始化的形式初始化str.copy(ptr);//str.copy("nihao");str.show();str.append(ptr);str.append("你好");str.show();str.compare(ptr);str.compare("您好");str.show();//最后再写一个show函数,用来在终端输出str里面保存的字符串cout<<str.at(2)<<endl;}
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>                        
#include <vector>
#include <memory>using namespace std;
class mystring{
private:char* buf;int len;
public:mystring(){}mystring(const char* r);void copy(mystring r);//此功能其实就是buf的set接口,即setBufbool compare(mystring r);void append(mystring r);char at(int index);void show();
};mystring::mystring(const char* r):len(strlen(r)),buf((char*)calloc(1,len+1))
{//len=strlen(r);//buf=(char*)calloc(1,len+1);strncpy(buf,r,len);
}void mystring::copy(mystring r)
{//如果len>=r.len直接用//如果len<r.len,根据r.len申请新空间,释放原先空间if(len<r.len){len=r.len;free(buf);buf=(char*)calloc(1,len+1);}strncpy(buf,r.buf,len);
}bool mystring::compare(mystring r)
{/*if(strcmp(buf,r.buf)==0){return true;}else{return false;}*/return strcmp(buf,r.buf)==0;
}void mystring::append(mystring r)
{len=len+r.len;char* temp=buf;buf=(char*)calloc(1,len+1);strcpy(buf,temp);strcat(buf,r.buf);
}char mystring::at(int index)
{return buf[index];
}void mystring::show()
{cout<<buf<<endl;
}int main(int argc, const char** argv)
{mystring str="hello";mystring ptr="world";str.show();ptr.show();str.copy(ptr);str.show();str.copy("niho");str.show();cout<<(str.compare(ptr))<<endl;cout<<(str.compare("world"))<<endl;str.append(ptr);str.show();str.append("world");str.show();cout<<str.at(0)<<endl;return 0;                             
}

http://www.lryc.cn/news/597888.html

相关文章:

  • 终端VS命令解释器(Linux Windows)
  • 算法牢笼与思想飞地:在人工智能时代守卫灵魂的疆域
  • 【使用TPCC和TPCH进行性能测试】
  • 编程日常开发工具整理
  • 顺丰面试提到的一个算法题
  • C# 继承 虚方法
  • linux性能调整和故障排查
  • Python进阶知识之pandas库
  • 前端开发 React 状态优化
  • 面向对象分析与设计40讲(7)设计原则之合成复用原则
  • 前端实现可编辑脑图的方案
  • 网络编程初识(详细易懂)
  • 嵌入式linux下的NES游戏显示效果优化方案:infoNES显示效果优化
  • Python进阶知识之pandas库(一)基础数据类型
  • Android热修复实现方案深度分析
  • Android root和完整性检测实现方案深度分析
  • 海信IP501H-IP502h_GK6323处理器-原机安卓9专用-TTL线刷烧录可救砖
  • HTTPS证书体系,证书加密流程(通信体系)
  • lumerical——光纤布拉格光栅(Fiber Bragg gratings)
  • Linux 或者 Ubuntu 离线安装 ollama
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-最近七天微博发布量实现
  • pig cloud框架中引入websocket
  • 车载绝缘子放电状态检测系统数据分析软件需求说明书
  • python自动化测试框架,封装方法方式
  • WebGIS 常用坐标系
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(8):自動詞 & 他動詞 「~ている」「~ておく」「~てある」
  • 【西北工业大学公开课】导引系统原理(全61讲)周军 -个人笔记版 5000字
  • JVM、Dalvik、ART垃圾回收机制
  • 大模型就业方向
  • OpenCV(02)图像颜色处理,灰度化,二值化,仿射变换