- 使用结构体实现string的功能,(定义全局函数)实现返回值是首地址的功能,再来实现运算,"+、>、==",实现清空字符串的功能
#include <iostream> #include <cstring> using namespace std;// 自定义字符串结构体 struct MyString {char* data;size_t length;// 构造函数MyString() {data = nullptr;length = 0;}// 带参数的构造函数MyString(const char* str) {length = strlen(str);data = new char[length + 1];strcpy(data, str);} };// 获取字符串首地址 char* getAddress(MyString& str) {return str.data; }// 字符串连接操作 MyString operator+(const MyString& str1, const MyString& str2) {MyString result;result.length = str1.length + str2.length;result.data = new char[result.length + 1];strcpy(result.data, str1.data);strcat(result.data, str2.data);return result; }// 比较运算符 bool operator>(const MyString& str1, const MyString& str2) {return strcmp(str1.data, str2.data) > 0; }bool operator==(const MyString& str1, const MyString& str2) {return strcmp(str1.data, str2.data) == 0; }// 清空字符串 void clear(MyString& str) {delete[] str.data;str.data = nullptr;str.length = 0; }int main() {// 测试代码MyString s1("Hello");MyString s2(" World");// 测试加法运算符MyString s3 = s1 + s2;cout << "s3 = " << s3.data << endl;// 测试比较运算符cout << "s1 > s2: " << (s1 > s2) << endl;cout << "s1 == s2: " << (s1 == s2) << endl;// 测试获取首地址cout << "s1的首地址: " << static_cast<void*>(getAddress(s1)) << endl;// 测试清空功能clear(s3);cout << "清空后s3的长度: " << s3.length << endl;return 0; }
C++ day1
2025/4/21 1:21:29
来源:https://blog.csdn.net/m0_72110718/article/details/144335522
浏览:
次
关键词:C++ day1
版权声明:
本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。
我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com
热文排行
- 华为 海思22AP10(SS524)H.265 编解码处理器用户指南
- 数据库物理结构设计
- 基于重要抽样的主动学习不平衡分类方法ALIS
- 如何在 Mac 上清空硬盘后恢复丢失的数据?
- npm install puppeteer 报错 npm ERR! PUPPETEER_DOWNLOAD_HOST is deprecated解决办法
- 《缺失MRI模态下的脑肿瘤分割的潜在相关表示学习》| 文献速递-深度学习肿瘤自动分割
- 开源模型时代的 AI 开发革命:Dify 技术深度解析
- (2)Django生产环境数据库的切换以及环境配置python-dotenv方案
- 【微信小程序】自定义组件 - 组件的生命周期
- 概率图模型在自然语言处理中的应用