欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > C++ day1

C++ day1

2025/2/24 7:26:09 来源:https://blog.csdn.net/m0_72110718/article/details/144335522  浏览:    关键词:C++ day1
  1. 使用结构体实现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;
    }

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词