Dodanie dwóch ciągów char - obiektowo, własna klasa
Ostatnio zmodyfikowano 2016-04-10 19:53
przemo191 Temat założony przez niniejszego użytkownika |
Dodanie dwóch ciągów char - obiektowo, własna klasa » 2016-04-10 16:28:15 Witam, mam pewien problem z "ogarnięciem" tematu obiektowości, dopiero raczkuję w tym temacie. Stworzyłem sobie własną klasę string1 oraz pochodną wypisz. Chciałbym dodać do siebie dwa ciągi znaków, ale nie wiem jak. #include<iostream> #include<string.h> using namespace std;
class string1 { int rozmiar; char * wsk; public: string1( char t[] ) : rozmiar( strlen( t ) ) , wsk( new char[ rozmiar + 1 ] ) { strcpy( wsk, t ); } void wypisz() { cout << wsk << endl; } void dodaj() { } };
int main() { string1 s1 = "ABC"; string1 s2 = "DEF"; s1.wypisz(); s2.wypisz(); system( "pause" ); }
Nie mogę przestawić się ciągle ze strukturalnego pisania. Pomysł jaki miałem na ten problem to void dodaj( const char t1[] ) { this->t[] = t[] + t1[]; }
A w main() Niestety ale nie działa mi on. W wynikiem tej operacji byłby ciąg DEFABC Czy mógłby ktoś mnie naprowadzić na rozwiązanie moje problemu? |
|
jankowalski25 |
» 2016-04-10 16:57:23 |
|
przemo191 Temat założony przez niniejszego użytkownika |
» 2016-04-10 19:53:32 Dziękuję za naprowadzenie, mój program działa tak jak tego chciałem, tylko pytanie czy zgodnie ze sztuką? Czy mógłby ktoś zerknąć i stwierdzić "Twój kod jest mierny ale działa", lub "Twój kod nie ma prawa działać i jest do d..." :) #include<iostream> #include<string.h> using namespace std;
class string1 { int rozmiar; char * wsk; public: string1( char t[] ) : rozmiar( strlen( t ) ) , wsk( new char[ rozmiar + 1 ] ) { strcpy( wsk, t ); } void wypisz() { cout << wsk << endl; } int lenght() { return strlen( wsk ); } void dodaj( string1 x ) { int rozmiar_x = x.lenght(); char * wsk2 = new char[ rozmiar + rozmiar_x + 1 ]; strcpy( wsk2, this->wsk ); strcat( wsk2, x.wsk ); delete[] wsk; this->wsk = wsk2; } };
int main() { string1 s1 = "ABC"; string1 s2 = "DEFG"; s1.wypisz(); s2.wypisz(); s1.dodaj( s2 ); s1.wypisz(); system( "pause" ); }
|
|
« 1 » |