当前位置: 首页 > 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.dtcms.com/a/294974.html

相关文章:

  • Ollama(3)模型迁移和API使用
  • Modbus协议详解与c#应用
  • 重写 与 重载
  • pig cloud框架中引入websocket
  • nginx websocket 代理 断网后 再联网 不能连接
  • Windows下编译UTF8-CPP
  • 前端学习 5:DFT
  • 云效CI/CD教程(PHP项目)
  • 如何提升连带消费?从新零售“人-货-场”模型拆解
  • 220V降5V,输出100MA,为家电电器消费类产品提供电源WD5202L
  • OpenCV+Python
  • WebGIS 常用坐标系
  • 真的假的?CISP认证考试将全面推行线下机考?
  • 我考PostgreSQL中级专家证书二三事
  • ubuntu24.04 nvidia driver无效///重装驱动
  • MYOJ_8513:CSP初赛题单6:竞赛要求相关
  • Java基础夯实——泛型全解析
  • Excel导入SQLServer报错
  • 炬森精密:缓冲滑轨的创新力量,重塑家居静音与安全新体验
  • SSM框架中关于Spring MVC的技术问题
  • 智能迎宾的认知革命:Deepoc具身智能如何让机器人读懂人类微语言
  • 论文略读: Howto Merge Your Multimodal Models Over Time?
  • IGM弧焊机器人气体节约
  • SwiftUI 实战:构建一个复杂的图书首页长页面
  • 本地部署 Stable Diffusion:零基础搭建 AI文生图模型
  • Linux中scp命令传输文件到服务器报错
  • 直播软件搭建与原生直播系统开发全解析
  • 【2025目标检测】最新论文
  • VulhubDVWA靶场环境搭建及使用
  • 【Mysql】 Mysql zip解压版 Win11 安装备忘