#include <iostream>
#include <cstring>
using namespace std;
class myString
{
private:
char *str;
int size;
public:
// 无参构造
myString() : str(new char), size(0) {}
// 有参构造
myString(const char *other)
{
size = strlen(other);
str = new char[size + 1];
strcpy(str, other);
}
myString (string s1,int size):str(new char [size+1],size(size+1)
{
strcpy(str,s1.c_str());
cout<<"myString的有参构造函数"<<endl;
}
// 拷贝构造
myString(const myString &other) : size(other.size)
{
str = new char[size + 1];
strcpy(str, other.str);
}
// 拷贝赋值函数
myString& operator=(const myString &other)
{
if (this != &other)
{
size = other.size;
str = new char[size + 1];
strcpy(str, other.str);
}
return *this;
}
// 析构函数
~myString()
{
delete []str;
}
// 判空函数
bool isempty() const
{
return size == 0;
}
//size函数
int len()
{
return size;
}
//c_str函数
char *c_str()
{
return str;
}
//at函数
char*at(int pos)
{
if(pos<0||pos>=size)
{
return *(str);
}
return *(str+pos);
}
void operator+(Mystring &s1){
char *temp=new char[size];
strcpy(temp,str);
size=size+s1.size;
delete [] str;
str=new char[size];
strcpy(str,temp);
strcat(str,s1.c_str());
}
//关系运算符
bool operator>(const Mystring s1)const{
for(int i=0;i<size;i++){
if(*(str+i)!=*(s1.str+i)){
return *(str+i)>*(s1.str+i);
}
}
return 0;
}
bool operator<(const Mystring s1)const
{
for(int i=0;i<size;i++)
{
if(*(str+i)!=*(s1.str+i))
{
return *(str+i)<*(s1.str+i);
}
}
return 1;
}
ostream &operator<<(ostream &cout,myString s1)
{
cout<<s1.c_str()<<endl;
return cout;
}
istream &operator>>(istream &cin,myString &s1)
{
if(s1.str!=nullptr){
delete [] s1.str;
}
string s;
cin>>s;
s1.size=strlen(s.c_str());
s1.str=new char[s1.size+1];
strcpy(s1.str,s.c_str());
return cin;
};
int main()
{
myString s1("hello");
myString s2("hhello");
cout<<(s1<s2)<<endl;
cout<<(s1>s2)<<endl;
return 0;
}
C++day4
最新推荐文章于 2025-05-28 22:18:33 发布