G
Guest
Реализовать класс String для работы со строками символов. Память под строку выделять динамически. Перегрузить операторы ==,>,<,!= и операции ввода-вывода в поток.В функции main привести примеры реализации указанных операций.
Вот что я родила и запуталась...Помогите, пожалуйста...
Вот что я родила и запуталась...Помогите, пожалуйста...
C++:
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
class string
{
public:
string(char *);
string ();
string (string *);
int operator ==(string str);
int operator >(string str);
int operator <(string str);
int operator !=(string str);
// ostream &operator << (ostream &stream);
char *stroka;
};
int string :: operator==(string str)
{
int i;
for (i=0;stroka[i]==str.stroka[i];i++)
if (stroka[i]==NULL && str.stroka[i]==NULL) return (1);//ravni
return (0);
};
int string :: operator!=(string str)
{
int i;
for (i=0;stroka[i]==str.stroka[i];i++)
if ((stroka[i])==NULL&&(str.stroka[i]!=NULL)
||(stroka[i]!=NULL&&str.stroka[i]==NULL))
{
cout<<"234";
return (1);//neravni
};
return (0);
};
int string:: operator > (string str)
{
int i;
for (i=0;stroka[i]==str.stroka[i];i++)
if (stroka[i]==NULL&&str.stroka[i]==NULL) return (0);//ravni;
if (stroka[i]>str.stroka[i]) return (1);//bolshe
return (-1);//menshe
};
int string:: operator < (string str)
{
int i;
for (i=0;stroka[i]==str.stroka[i];i++)
if (stroka[i]==NULL&&str.stroka[i]==NULL) return (0);//ravni;
if (stroka[i]<str.stroka[i]) return (1);//menshe
return (-1);//bolshe
};
void main()
{
clrscr();
int i;
string *p[2];
p[1]->stroka[256]=(char)malloc(256);
strcpy(p[1]->stroka,"tdlkfjlsk;djflksjdfl;ksdjglkdjfgkl;jdfl;gjdf");
p[2]->stroka[256]=(char)malloc(256);
strcpy(p[2]->stroka,"sdlkfjlsk;djflksjdfl;ksdjglkdjfgkl;jdfl;gjdf");
p[1] != p[2];
getch();
};
ostream &operator << (ostream &stream,string str)
{
int i,j;
j=0;
while (str.stroka[j]!=NULL)
{
if (j%10==0)
{
stream <<"-"<<endl;
}
stream <<str.stroka[j];
j++;
};
return stream;
};
ostream &operator >> (ostream &stream,string str)
{
char c;
int i;
i=0;
while (cin>>c)
{
str.stroka[i]>>c;
stream>>str.stroka;
i++;
}
return stream;
/*char s[256];
stream.getline(s,256);
strcpy(str.stroka,s);
return stream; */
};
string :: string (char *str)
{
strcpy (stroka,str);
};
string :: string ()
{};
string::string (string *)
{};