作业要求

代码:

#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. tp框架总体学习总结(一)

    一.TP框架的下载和安装 Tp框架下载网址:http://www.thinkphp.cn/ 在wamp的www目录下创建一个目录tpshop目录 1.  将下载好的包压缩后将文件包里的所有文件复制到创 ...

  2. WINDOWS 远程桌面不能直接拷贝文件问题

    使用WIN7远程客户端连WIN 2003服务器,发现不能拷贝文件,使用下面方法解决:

  3. Vim配置(k-vim)

    无意发现一个vim的插件 转载:http://www.cnblogs.com/yxy2829/p/5250587.html 截图 solarized主题 molokai主题 安装步骤 1. clone ...

  4. DHCP服务器原理

    DHCP服务器   port:67 DHCP 这个服务可以自动的分配 IP 与相关的网络参数给客户端, 来提供客户端自动以服务器提供的参数来设定他们的网络   12.1 DHCP 运作的原理      ...

  5. mysql5.7忘记密码

    注意:mysql5.7 user表密码字段由password改为authentication_string 1.service mysql stop 2.mysqld_safe --skip-gran ...

  6. xargs的原理剖析及用法详解

    转载请注明出处:http://www.cnblogs.com/f-ck-need-u/p/5925923.html 学习这个xargs花了很长时间,在网上翻了很久也查了很多书关于xargs的介绍,都只 ...

  7. C++中extern关键字用法小结

    总结C++中关于extern关键字的用法. 1.变量的生明和定义中 C++语言支持分离式编译机制,该机制允许将程序分割为若干个文件,每个文件可被独立编译.为了将程序分为许多文件,则需要在文件中共享代码 ...

  8. DNS初识

    /注释----本文大部分内容来自网络/ 一.定义: DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库, ...

  9. text()和html()的区别,以及val()

    text():设置或返回所选元素的文本内容: html():设置或返回所选元素的内容(包括 HTML 标记): val():设置或返回表单字段的值 例如: <!DOCTYPE html>& ...

  10. StringUtils方法全集

    org.apache.commons.lang.StringUtils中方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的( ...