home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / tcpp / examples / xstring.cpp < prev   
C/C++ Source or Header  |  1990-06-09  |  2KB  |  74 lines

  1. //XSTRING.CPP--Beispiel aus Kapitel 5 der Einführung */
  2. // Version von STRING.CPP mit überladenem Operator +
  3.  
  4. #include <iostream.h>
  5. #include <string.h>
  6.  
  7. class String {
  8.    char *char_ptr;   // Zeiger auf den String-Inhalt
  9.    int length;       // Länge des Strings  
  10. public:
  11.    // drei verschiedene Konstruktoren:
  12.    String(char *text);           // Konstruktor benutzt existierenden String
  13.    String(int size = 80);        // erzeugt einen leeren String
  14.    String(String& Other_String); // für Zuweisung von einem anderen
  15.                                  // Objekt dieser Klasse
  16.    ~String() {delete char_ptr;}; // Destruktor
  17.    int Get_len (void);
  18.    String& operator+ (String& Arg);
  19.    void Show (void);
  20. };
  21.  
  22. String::String (char *text)
  23. {
  24.    length = strlen(text);  // Länge des Textes ermitteln
  25.    char_ptr = new char[length + 1];
  26.    strcpy(char_ptr, text);
  27. };
  28.  
  29. String::String (int size)
  30. {
  31.    length = size;
  32.    char_ptr = new char[length+1];
  33.    *char_ptr = '\0';
  34. };
  35.  
  36. String::String (String& Other_String)
  37. {
  38.    length = Other_String.length;       // Länge des anderen Strings
  39.    char_ptr = new char [length + 1];   // Speicher reservieren
  40.    strcpy (char_ptr, Other_String.char_ptr); // den Text kopieren
  41. };
  42.  
  43. String& String::operator+ (String& Arg)
  44. {
  45.   length += Arg.length;
  46.   char * NewText = new char[length+1];
  47.   strcpy(NewText, char_ptr);
  48.   strcat(NewText, Arg.char_ptr);
  49.   delete char_ptr;
  50.   char_ptr = NewText;
  51.   return *this;
  52. }
  53.  
  54. int String::Get_len(void)
  55. {
  56.    return (length);
  57. };
  58.  
  59. void String::Show(void)
  60. {
  61.    cout << char_ptr << "\n";
  62. };
  63.  
  64. main ()                                // Funktionen testen
  65. {
  66.    String AString ("Der schnelle braune Fuchs");
  67.    AString.Show();
  68.  
  69.    String BString(" springt über Willi");
  70.    String CString;
  71.    CString = AString + BString;
  72.    CString.Show();
  73. }
  74.