#include <iostream>
#include <string.h>
#define size 255
using namespace std;
class String
{
char *one;
public:
String();
~String ();
void set(char *);
void print();
void operator= (String& a)
{
if (strlen(one) % 2 != 0 && strchr(one,4644908)!=NULL)
{
cout<<"hi"<<endl;
strcpy(a.one,(strpbrk(one," ")+1));
}
}
};
String::String()
{
one=new char[size];
one[0]='\0';
}
String::~String()
{
delete one;
}
void String::set(char *str)
{
strcpy(str, one);
}
void String::print()
{
cout<<one<<endl;
}
int main ()
{
String str1, str2;
char *s;
s=new char[size];
cout<<"You string:"<<endl;
cin.getline(s,size);
str1.set(s);
str2 = str1;
str1.print();
str2.print();
delete s;
return 0;
}
Работа со строками (С++)
Только учусь языку, подскажите, где ошибка? И, если не сложно, может есть пожеланий и предложения по коду?
Код:
void String::set(char *str) на void String::set(const char *str)
void operator= (String& a) на void operator= (const String& a)
Возможно, после прочтения сообщений компилятора появятся идеи.
Оператор = должен возвращать ссылку на объект.
Цитата:
strlen([COLOR="red"]a.[/COLOR]one) % 2 != 0 && strchr([COLOR="red"]a.[/COLOR]one,' ')!=NULL
strcpy(one,(strpbrk([COLOR="red"]a.[/COLOR]one," ")+1));