第3天作业 PoEdu MyString实现

作业要求

代码:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>

class MyString
{
    char *_str;
    int _len;
public:
    MyString()
    {
        _str = new char[100];
        _len = 100;
    }
    MyString(const char *str)
    {
        if (str == NULL)
        {
            _str = new char[1];
            *_str = ‘\0‘;
        }
        else
        {
            int _len = strlen(str);
            _str = new char[_len + sizeof(char)];
            strcpy(_str, str);
        }

    }
    ~MyString()
    {
        delete[]_str;
    }

    char *GetString()
    {
        return _str;
    }
    //设置字符串
    void SetString(const char *str)
    {
        delete[]_str;
        int _len = strlen(str);
        _str = new char[_len + sizeof(char)];
        strcpy(_str, str);
    }

    //通过下标取得字符
    char GetChar(int index)
    {
        if(index<=strlen(_str) && index >= 0)
            return _str[index];
        return 0;
    }

    //求字符串长度
    unsigned int GetStringLens()
    {
        unsigned int index = 0;
        while (_str[index])
        {
            index++;
        }
        return index;
    }

    //求数组的长度
    unsigned int GetArryLens()
    {
        return sizeof(_str) / sizeof(_str[0]);
    }

    //批量修改其中的某个字符为其它某个字符
    char * MyCharReplace(char dest,char source)
    {
        while (*_str!=‘\0‘)
        {
            if (*_str == dest)
            {
                *_str = source;
            }
            *_str++;
        }
        return _str;
    }

    //在末尾追加字符
    void MyAddEnd(char c)
    {
        char tmp[] = { c,‘\0‘ };
        MyString::MyAddEnd(tmp);
    };

    // 在末尾追加字符串
    void MyAddEnd(char *str)
    {
        _str = strncat(_str, str, strlen(str) + sizeof(char));
    }

    // 在末尾追加整数
    void MyAddEnd(int num)
    {
        char tmp[255]={0};
        sprintf(tmp,"%d",num);
        MyString::MyAddEnd(tmp);
    }

    //在末尾追加浮点数
    void MyAddEnd(double num)
    {
        char tmp[255] = { 0 };
        sprintf(tmp, "%8.3lf", num);
        MyString::MyAddEnd(tmp);
    }

    //在末尾追加MyString
    void MyAddEnd()
    {
        _str = strncat(_str, _str, strlen(_str) + sizeof(char));
    }

    //从头 弹出一个字符
    char PopupHead()
    {
        int index = 0;
        char tmp = _str[index];
        while(_str[index]!=0)
        {
            _str[index] = _str[index + 1];
            index++;
        }
        return tmp;
    }

    //从末尾弹出一个字符
    char PopupEnd()
    {
        int index = 0;
        while (_str[index] != 0)
        {
            index++;
        }
        char tmp = _str[index-1];
        _str[index-1] = 0;

        return tmp;
    }
};

int main()
{
    MyString demo1("我爱你中国!");   //MyString demo2();

    MyString demo("I Love Mark");
    demo.SetString("i love HaoZaiYi");

    std::cout << demo.GetString() << "  "<<demo.GetChar(10) << std::endl;
    std::cout << demo.GetStringLens() << "  " << demo.GetArryLens() << std::endl;
    demo.MyAddEnd(‘y‘);
    std::cout <<  demo.GetString() << std::endl;
    demo.MyAddEnd("aaaaa");
    std::cout << demo.GetString() << std::endl;
    demo.MyAddEnd(123456);
    std::cout << demo.GetString() << std::endl;
    demo.MyAddEnd(123456.789);
    std::cout << demo.GetArryLens() << std::endl;
    std::cout << demo.PopupHead() << demo.PopupEnd() << std::endl;
    std::cout << demo.PopupHead() << demo.PopupEnd() << std::endl;
    std::cout << demo.PopupHead() << demo.PopupEnd() << std::endl;
    std::cout << demo.PopupHead() << demo.PopupEnd() << std::endl;
    std::cout << demo.MyCharReplace(‘o‘,‘@‘) << "   "<< demo.GetString() << std::endl;

      return 0;
}

高亮部分,代码没有达到作业要求。有bug待解决。

时间: 2024-08-02 17:55:21

第3天作业 PoEdu MyString实现的相关文章

程序设计实习MOOC / 继承和派生——编程作业 第五周程序填空题1

描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8. ijAl- 9. ijAl-mnop 10. qrst-abcd- 11. abcd-qrst-abcd- uvw xyz about big me take abcd qrst-abcd- 要 求:MyString类必须是从C++的标准类string类派生而来.提示1:如果将程序中所有 "My

软件工程——第二次作业(2)

施工中-- 作业要求:https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/922 项目要求是编写出一个拥有"词频统计"功能的小程序,作为一个小程序,若只是实现基本的词频统计功能,其实并不是很难.但是,如果再附加一些需求和功能的话就会让我感到有点难度了,更何况为了以后课程的要求,我选择使用Visual Studio 2015编译器和C#语言这两种从未学过的工具,在4-5天之内共10个小时左右(预计,但是实际上确实是花了更多时间

2017282110285--第一次个人作业

第一部分:结缘计算机 1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 其实我从高一就开始接触编程了,在高中我搞了两年的算法竞赛,算是有一点算法基础(捂脸,其实实力弱得一批),也是在那个时候开始爱上了编程.因此在高考结束后就报了信息安全专业,哪怕那时候父母不是很支持我报跟计算机相关的专业.我认为我的起步条件会比一般的零基础的萌新稍微好那么一点点,但也就仅限于此了,毕竟有天赋的人比比皆是,他们只是缺少一个契机罢了,入门之后分分钟起飞的也是一大把,更不用说那些大牛博主了,他们的程序员

python学习:程序控制结构·作业20141219

Python学习:程序控制结构 20141219 编程环境: windows 7 x64 python 2.7.6 题目: 1 编写程序,完成下列题目(1分) 题目内容: 如果列出10以内自然数中3或5的倍数,则包括3,5,6,9.那么这些数字的和为23.要求计算得出任意正整数n以内中3或5的倍数的自然数之和. 输入格式: 一个正整数n. 输出格式: n以内中3或5的倍数的自然数之和. 输入样例: 10 输出样例: 23 时间限制:500ms内存限制:32000kb n = int(raw_in

团队编程项目作业

团队名称: 简单 队长 学号:2015035107224 姓名:张志鹏 成员 学号:2015035107071 姓名:邱阳阳 学号:2015035107044 姓名:刘孝东 学号:2015035107007 姓名:孙弘原 学号:2015035107005 姓名:刘文帅 学号:2015035107009 姓名:杨琳 团队编程项目作业名称:爬取豆瓣电影TOP250 选择该团队编程项目原因:感觉项目有意思

团队项目编程作业

团队名称: 简单 队长 学号:2015035107224 姓名:张志鹏 成员 学号:2015035107071 姓名:邱阳阳 学号:2015035107044 姓名:刘孝东 学号:2015035107007 姓名:孙弘原 学号:2015035107005 姓名:刘文帅 学号:2015035107009 姓名:杨琳 团队编程项目作业名称:爬取豆瓣电影TOP250 选择该团队编程项目原因:我爱学习

团队作业八——第二次团队冲刺(Beta版本)第6天

团队作业八--第二次团队冲刺(Beta版本)第5天 一.每个人的工作 (1) 昨天已完成的工作 简单模式逻辑代码涉及与相关功能的具体实现 (2) 今天计划完成的工作 修改完善注册登录内容界面,编辑错题文件写入. (3) 工作中遇到的困难 今天花了较多时间在完善登录注册界面上,这让我们比较担心,如果每天都花很多时间在解决之前的问题,当天的任务又做不好,会不会赶不上进度.如果每天都不能正常完美的完成每天任务,那冲刺最后一天结束的时候,又哪里再有一个明天给我们完善代码.且今天还遇到了写入SD存储卡文件

MyString(重写String)

http://wenku.baidu.com/view/d7ac113243323968011c925b.html http://blog.csdn.net/wxm349810930/article/details/52553578 已知类String的原型为: class String  { public:    String(const char *str = NULL); // 普通构造函数 String(const String &other);     // 拷贝构造函数 ~ Stri

第四周作业(汇总)

本周作业: 1.对四则运算软件需求的获取方式进行实践,例如使用调查问卷访问相关关系人等. 答: 本次是借助“问卷星”网站来发布问卷进行调查的.问卷地址:https://sojump.com/jq/9942880.aspx 本次问卷针对学生.家长和老师三个对象进行调查,对 四则软件进行需求分析.问卷调查结束后,问卷星还提供数据分析服务. 2.采用四象限法将你小组的四则运算软件的需求功能进行分类.阐述其优势与不足. 3.尝试把四则运算软件需求进行分解,变为每个小组成员可执行的积压工作项,分配这些工作