作业要求

代码:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring> class MyString
{
char *_str;
int _len;
public:
MyString()
{
_str = new char[];
_len = ;
}
MyString(const char *str)
{
if (str == NULL)
{
_str = new char[];
*_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 >= )
return _str[index];
return ;
} //求字符串长度
unsigned int GetStringLens()
{
unsigned int index = ;
while (_str[index])
{
index++;
}
return index;
} //求数组的长度
unsigned int GetArryLens()
{
return sizeof(_str) / sizeof(_str[]);
} //批量修改其中的某个字符为其它某个字符
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[]={};
sprintf(tmp,"%d",num);
MyString::MyAddEnd(tmp);
} //在末尾追加浮点数
void MyAddEnd(double num)
{
char tmp[] = { };
sprintf(tmp, "%8.3lf", num);
MyString::MyAddEnd(tmp);
} //在末尾追加MyString
void MyAddEnd()
{
_str = strncat(_str, _str, strlen(_str) + sizeof(char));
} //从头 弹出一个字符
char PopupHead()
{
int index = ;
char tmp = _str[index];
while(_str[index]!=)
{
_str[index] = _str[index + ];
index++;
}
return tmp;
} //从末尾弹出一个字符
char PopupEnd()
{
int index = ;
while (_str[index] != )
{
index++;
}
char tmp = _str[index-];
_str[index-] = ; return tmp;
}
}; int main()
{
MyString demo1("我爱你中国!"); //MyString demo2(); MyString demo("I Love Mark");
demo.SetString("i love HaoZaiYi"); std::cout << demo.GetString() << " "<<demo.GetChar() << 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();
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 ;
}

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

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

  1. PoEdu - C++阶段班【Po学校】- Lesson03-4_构造函数&赋值函数&拷贝构造函数&学习方式 - 第6天

    PoEdu - C++阶段班[Po学校]- 第6天 课堂选择题目: 1  关于转换构造函数  ClassDemo demo = 1;  调用转换构造函数 2  关于拷贝赋值函数  demo =2; 首 ...

  2. PoEdu - C++阶段班【Po学校】- 第3天

    引用 C中指针的功能强大,使用起来繁杂,因为指针要控制的东西太多:有指针的类型,指针的解引用,指针空间内的值,它本身是有空间的,有自己的地址等.指针也是强大的,比如:我们要在函数之内,修改方法之外的值 ...

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

    描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8 ...

  4. python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)

    类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...

  5. SQLServer2005创建定时作业任务

    SQLServer定时作业任务:即数据库自动按照定时执行的作业任务,具有周期性不需要人工干预的特点 创建步骤:(使用最高权限的账户登录--sa) 一.启动SQL Server代理(SQL Server ...

  6. 使用T-SQL找出执行时间过长的作业

        有些时候,有些作业遇到问题执行时间过长,因此我写了一个脚本可以根据历史记录,找出执行时间过长的作业,在监控中就可以及时发现这些作业并尽早解决,代码如下:   SELECT sj.name , ...

  7. T-SQL检查停止的复制作业代理,并启动

        有时候搭建的复制在作业比较多的时候,会因为某些情况导致代理停止或出错,如果分发代理时间停止稍微过长可能导致复制延期,从而需要从新初始化复制,带来问题.因此我写了一个脚本定期检查处于停止状态的分 ...

  8. Python09作业思路及源码:高级FTP服务器开发(仅供参考)

    高级FTP服务器开发 一,作业要求 高级FTP服务器开发 用户加密认证(完成) 多用户同时登陆(完成) 每个用户有不同家目录且只能访问自己的家目录(完成) 对用户进行磁盘配额,不同用户配额可不同(完成 ...

  9. 个人作业week3——代码复审

    1.     软件工程师的成长 感想 看了这么多博客,收获颇丰.一方面是对大牛们的计算机之路有了一定的了解,另一方面还是态度最重要,或者说用不用功最重要.这些博客里好些都是九几年或者零几年就开始学习编 ...

随机推荐

  1. Kolmogorov 的数学观与业绩

    https://www.douban.com/group/topic/11395706/ 作者:伊藤清 当我得知苏联伟大的数学家,84岁的 Andreyii Nikolaevich Kolmogoro ...

  2. Python描述符(descriptor)解密(转)

    原文:http://www.geekfan.net/7862/ Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装 ...

  3. angular表单

    angular的表单,点击确定进行创建,支持批量创建,表单验证有样式提醒; <!DOCTYPE html> <html lang="en"> <hea ...

  4. 解决String TestContext下使用junit4抛出异常(java.lang.NoClassDefFoundError)的问题

    Spring版本2.5.5,JUnit 版本 4.8.1,使用了 Spring TestContext 的 SpringJUnit4ClassRunner.一直使用这个版本的JUnit,在写简单的测试 ...

  5. ADOConnectoin事务和存储过程中的Begin tran commit

    一直以来我都是在存储过程中使用事务 create proc usp_proc begin begin  tran ..... commit end 那么我现在问一个问题,如果在BCB的代码中写这样的代 ...

  6. Git相关文章

    1.Git教程 2.Git常用命令整理 3.EGit(Git Eclipse Plugin)使用

  7. golang的channel使用

    chan使用前必须用make来创建,可以有多个槽位 0个槽位相当于消息,1个槽位相当于锁,多个槽位就是读者-写者 go func

  8. win7 下加载MSCOMCTL.OCX

    cd C:\Windows\System32"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regtlibv12.exe" msd ...

  9. oracle数据库导入、导出

    导出:exp BFXXLZ/BFXXLZ123@192.168.63.63:1521/ORCL file=d:\BFXXLZ.dmp 导入:imp BFXXLZ/BFXXLZ123@ORCL file ...

  10. Servlet学习一

    Servlet担当着客户请求(Web浏览器或其它HTTP客户程序)与服务器响应(HTTP服务器上数据库或应用程序)的中间层.Servlet是位于Web服务器内部的服务器端Java应用程序,与传统的从命 ...