home *** CD-ROM | disk | FTP | other *** search
- //XSTRING.CPP--Beispiel aus Kapitel 5 der Einführung */
- // Version von STRING.CPP mit überladenem Operator +
-
- #include <iostream.h>
- #include <string.h>
-
- class String {
- char *char_ptr; // Zeiger auf den String-Inhalt
- int length; // Länge des Strings
- public:
- // drei verschiedene Konstruktoren:
- String(char *text); // Konstruktor benutzt existierenden String
- String(int size = 80); // erzeugt einen leeren String
- String(String& Other_String); // für Zuweisung von einem anderen
- // Objekt dieser Klasse
- ~String() {delete char_ptr;}; // Destruktor
- int Get_len (void);
- String& operator+ (String& Arg);
- void Show (void);
- };
-
- String::String (char *text)
- {
- length = strlen(text); // Länge des Textes ermitteln
- char_ptr = new char[length + 1];
- strcpy(char_ptr, text);
- };
-
- String::String (int size)
- {
- length = size;
- char_ptr = new char[length+1];
- *char_ptr = '\0';
- };
-
- String::String (String& Other_String)
- {
- length = Other_String.length; // Länge des anderen Strings
- char_ptr = new char [length + 1]; // Speicher reservieren
- strcpy (char_ptr, Other_String.char_ptr); // den Text kopieren
- };
-
- String& String::operator+ (String& Arg)
- {
- length += Arg.length;
- char * NewText = new char[length+1];
- strcpy(NewText, char_ptr);
- strcat(NewText, Arg.char_ptr);
- delete char_ptr;
- char_ptr = NewText;
- return *this;
- }
-
- int String::Get_len(void)
- {
- return (length);
- };
-
- void String::Show(void)
- {
- cout << char_ptr << "\n";
- };
-
- main () // Funktionen testen
- {
- String AString ("Der schnelle braune Fuchs");
- AString.Show();
-
- String BString(" springt über Willi");
- String CString;
- CString = AString + BString;
- CString.Show();
- }
-