第3天作业 PoEdu MyString实现
2024-10-19 09:38:46
作业要求
代码:
#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待解决。
最新文章
- SSRS ----环境配置,没有 ReportServer DB 怎么办?
- CloudSim4.0报错NoClassDefFoundError,Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.distribution.UniformRealDistribution
- React Native知识1-FlexBox 布局内容
- 【CityHunter】服务器端设计思路
- JavaEE Log4j
- Java语法糖4:内部类
- SQLServer语句大使
- PostgreSQL9.2.4内核源码结构介绍
- 一些java考过的测试题和自己制作模拟服务端和客户端
- 《程序员面试金典(第5版)》【PDF】下载
- 解决win7中防火墙的0x6D9问题的方法
- Xcode出现may cause a leak非忽略的解决方法
- maven dependency的版本冲突问题
- Velocity中为什么要使用{}来明确标识变量
- Android Studio:Support Library依赖包的版本号
- 深入理解linux内核v4l2框架之videobuf2【转】
- python 全栈开发,Day49(超链接导航栏案例,background,定位,z-index,iconfont使用)
- hibernate flush clear的区别
- C# 灵活用法拾遗
- ifconfig-dropped