|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <iostream>
#include <string.h>
using namespace std;
class MyString
{
private:
char *str;//保存字符串的堆空间地址的指针
public:
MyString()//无参构造函数
{
this->str = new char[1000];
}
MyString(char *str)//有参普通构造函数
{
this->str = str;
}
MyString(MyString &S1)//深层拷贝构造函数
{
this->str = S1.str;
}
~MyString()//析构函数
{
if (this->str != NULL)
delete[](this->str);
this->str = NULL;
}
char getCharAt(int index)//得到字符串中第index个字符
{
return str[index];
}
int getLen()//得到字符串的长度
{
return (sizeof(str) - 1);
}
void display()//显示字符串内容
{
cout << this->str;
}
void putChar(char *str)//保存字符串的堆空间地址的指针
{
this->str = str;
}
MyString operator+(MyString &S1)//实现2个字符串连接
{
MyString aux;
aux = strcat(this->str, S1.str);
return aux;
}
bool operator<(MyString &S1)//比较2个字符串
{
//如果返回值 < 0,则表示 str1 小于 str2。
// 如果返回值 > 0,则表示 str2 小于 str1。
// 如果返回值 = 0,则表示 str1 等于 str2。
int aux = strcmp(this->str, S1.str); // a < b ?
if (aux < 0)
{
return true;
}
return false;
}
ostream operator<<(MyString &S1)//析取运算符重载;用于输出字符串内容
{
S1.display();
}
};
int main()
{
char * str;
char * aux = "12345";
MyString S1(str); //有参构造
S1.putChar(aux);
S1.display();
cout << " true : " << S1.getCharAt(2) << endl;
MyString S2(S1); ////深度拷贝
S2.display();
cout << " false:" << S2.getLen() << endl;
MyString S3; ////无参构造
S3.putChar(aux);
S3.display();
cout << S3.getLen() << endl;
bool result;
result = S1 < S3;
system("pause");
return 0;
}
|
|