home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD2.mdf
/
c
/
tcpp
/
examples
/
xstring.cpp
< prev
Wrap
C/C++ Source or Header
|
1990-06-09
|
2KB
|
74 lines
//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();
}