// przeciazadnie1zadanie2.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include class DynString { char* string; int linia; public: DynString (DynString &dyn); DynString (char* lancuch); const char* CStr (); const int Size (); void operator += (char *lancuch); void operator ! (); int ZwrocLinie(); }; ///////////////////////////////////// DynString::DynString (char* lancuch) { int dlugosc; dlugosc=strlen(lancuch); string = (char*)malloc ( (dlugosc + 1)*sizeof(char) ); if (string !=NULL) { strcpy (string,lancuch); } } const char* DynString::CStr () { return string; } const int DynString::Size () { return strlen(string); } DynString::DynString (DynString &dyn) { string = (char*)malloc( ( strlen(dyn.string) + 1)*sizeof(char)); if(string != NULL) { strcpy(string, dyn.string); } } void DynString::operator+= (char* lancuch) { int ilosc = strlen (lancuch) + strlen (string) + 1; int starailosc = strlen (string); char * oldstring; oldstring=string; string = (char*) realloc (string, ilosc); if (string != NULL) { strcpy(string, oldstring); char *ptr = string; ptr += strlen(string); strcpy(ptr, lancuch); } } void DynString::operator! () { strupr (string); } int DynString::ZwrocLinie () { return linia; } int _tmain(int argc, _TCHAR* argv[]) { DynString napis("Napis testowy."); printf("Napis: %s\n", napis.CStr()); printf("Znakow: %i\n", napis.Size()); DynString kopia = napis; printf("Kopia: %s\n", kopia.CStr()); printf("Znakow: %i\n", kopia.Size()); kopia += " - pierwszy fragment -"; kopia += " drugi fragment."; printf("Napis %s\n", napis.CStr()); printf("Znakow: %i\n", napis.Size()); printf("Kopia %s\n", kopia.CStr()); printf("Znakow: %i\n", kopia.Size()); !napis; printf("Napis %s\n", napis.CStr()); printf("\nKoniec."); printf (" //////////////////////////////////////////////////////// \n"); DynString napis3("Napis testowy."); printf ("linia nr [%d] - ",napis.ZwrocLinie() ); printf("Napis: %s\n", napis.CStr()); printf("Znakow: %i\n", napis.Size()); _getch(); return 0; }