C++第四讲

news/2024/12/29 17:12:31/

思维导图

 仿照string类,实现myString类

/* ---------------------------------@author:YoungZorncreated on 2023/7/19 19:20.---------------------------------
*/
#include<iostream>
#include<cstring>using namespace std;class myString
{
private:char *str;           //记录c风格的字符串int size;            //记录字符串的实际长度
public://无参构造myString():size(10){str = new char[size];         //构造出一个长度为10的字符串strcpy(str,"");         //初始化myString对象str为空串}//有参构造myString(const char *s)          //string  s("hello world"){size = strlen(s);str = new char[size+1];   //末尾添加 '\0'strcpy(str, s);   //--->str = "hello world"}//拷贝构造myString(const myString & other):str(new char(*other.str)),size(other.size){}//析构函数~myString(){delete [] str;}//拷贝赋值函数myString& operator=(const myString& other){if(this != &other){delete [] str;  //释放原有的内存this->size = other.size;this->str = new char(*(other.str));}return *this;}//判空函数bool isEmpty(){if(strcmp(str,"") == 0){return true;}return false;}//size函数int strSize(){if (isEmpty()){return -1;}return strlen(str);}//c_str函数const char *str_c_str()const{return str;   //返回一个C风格的字符串}//at函数char &at(int pos){if (isEmpty()){const int &ref = -1;return (char &)ref;}return str[pos];   //返回字符所在字符串的下标}//加号运算符重载  (+)const myString operator+ (const myString & R) const{int newSize = size + R.size;  //新字符串的长度char *newStr = new char[newSize+1];  //分配新字符串内存strcpy(newStr, this->str);strcat(newStr,R.str);return myString(newStr);}//加等于运算符重载 (+=)const myString operator+= (const myString & R){size += R.size;  //更新sizestrcat(this->str,R.str);  //将R.str追加到str上return myString(this->str);}//关系运算符重载 (>)bool operator> (const myString & R) const {int flag = strcmp(this->str,R.str);if (flag > 0)return true;return false;}
};int main(){myString string1 = "hello";bool flag = string1.isEmpty();cout<<flag<<endl;cout<<string1.strSize()<<endl;cout<<"at[0]:"<<string1.at(0)<<endl;myString s1 = "qwe";myString s2 = "asd";cout<<(s1>s2)<<endl; //判断 s1 和 s2 的大小s1 += s2;cout<<"s1 += s2 = "<<s1.str_c_str()<<endl;  // +=cout<<s1.str_c_str()<<endl;myString s3 = "aaa";myString s4 = "bbb";myString s5 = s3 + s4;cout<<"s3 + s4 = "<<s5.str_c_str()<< endl;  // +return 0;
}


http://www.ppmy.cn/news/953087.html

相关文章

ChatGPT专业应用:小红书种草文案撰写

正文共 547字&#xff0c;阅读大约需要 2 分钟 小红书博主/品牌方运营必备技巧&#xff0c;您将在2分钟后获得以下超能力&#xff1a; 快速批量生成种草文案 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | Alice 编辑…

【AI训练新手记:如何通过ChatGPT生成令人惊艳的文案!】

【我】&#xff1a;我是一名Youtuber&#xff0c;工作内容是写吸引人的youtube脚本&#xff0c;并拍摄上传&#xff0c;我的领域是技术型频道&#xff0c;请你告诉我10个chatgpt相关的吸引人的选题 【ChatGPT】&#xff1a;当然&#xff0c;下面是10个有关技术的ChatGPT相关的吸…

能耗管理平台保障用电的安全

安科瑞虞佳豪 壹捌柒陆壹伍玖玖零玖叁 6月12日&#xff0c;江苏盐城射阳县某民房起火&#xff0c;消防救援人员到场后&#xff0c;立即对火势进行扑救&#xff0c;经过20多分钟的处置&#xff0c;现场明火全部被扑灭&#xff0c;据了解&#xff0c;起火原因是电线老化短路引发…

Stream实现List和Map互转总结

本文来说下Stream实现List和Map互转总结 文章目录 实体类Map转List代码List转Map代码 实体类 本篇介绍Stream流List和Map互转&#xff0c;同时在转换过程中遇到的问题分析。 package cn.wideth.collect;import lombok.AllArgsConstructor; import lombok.Data; import lombok.N…

chatGPT使用手册

ChatGPT使用总结&#xff1a;150个ChatGPT提示词模板&#xff08;完整版&#xff09; 所有提示词模板功能列表如下&#xff1a; &#xfffd;&#xfffd;&#xfffd; 充当 Linux 终端 i want you to act as a linux terminal. I will type commands and you will reply wit…

Druid-排查conditionDoubleConstAllow配置问题(double const condition)

Druid-排查conditionDoubleConstAllow配置问题(double const condition) 报错信息 Caused by: java.sql.SQLException: sql injection violation, dbType postgresql, druid-version 1.2.18, double const condition : SELECT * FROM test where 11 AND TRUE AND TRUE关键词&…

回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出(不调用工具箱函数)

回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出(不调用工具箱函数) 文章目录 回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出(不调用工具箱函数)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 GRU神经网络是LSTM神经网络的一种变体&#xff0c;LSTM 神经网 …

ChatGPT将彻底改变人们的工作方式

&#xff08;来源&#xff1a;企业网D1Net&#xff09; 关注公众号【人工智能学派】&#xff0c;加入我们社群&#xff0c;免费领取官方chatGPT账号 自从OpenAI公司推出ChatGPT以来&#xff0c;它以风暴般的速度迅速影响了大量用户的日常工作和生活&#xff0c;并且已经通过医…