Lektion 56:

Die Klasse string

 Für die Verarbeitung von Zeichenketten gibt es in der C++-Standardbibliothek die Klasse string. Durch die Überladung aller wichtigen Operatoren lassen sich Objekte der Klasse string ebenso leicht verwenden, wie Objekte des Typs int. Insofern ist die Klasse string ein Musterbeispiel schöner Programmierkunst in C++.

  Um die Klasse string verwenden zu können, muß die Datei <string> inkludiert werden. Die Include-Dateien der Standardbibliothek enden nicht auf ".h". Außerdem arbeitet die Datei <string> nicht mit der Datei <iostream.h> zusammen. Statt dessen muß ab jetzt die Datei <iostream> (ohne ".h") verwendet werden. Das reicht aber immer noch nicht aus. Die Zeile

using namespace std;

muß den include-Zeilen folgen, damit die Klassen aus der Standardbibliothek direkt verwendet werden können. Es gibt noch einen anderen Weg, aber die using-Direktive ist bis auf weiteres vorzuziehen, weil sie so einfach ist.

Bis auf weiteres soll gelten, daß Sie immer, wenn Sie Dateien inkludieren, die keine Erweiterung haben (das sind die Dateien der C++-Standardbibliothek) nach dem inkludieren die Direktive

using namespace std;

setzen sollen.

#include <iostream>
#include <string>
using namespace std;

void main()
{
   string name;
   cout<<"Wie heissen Sie? ";
   cin>>name;
   cout<<"Hallo, "<<name<<'!'<<endl;
};

Die wichtigsten überladenen Operatoren der Klasse string sind:

Der operator+. Er hängt einen String an den anderen.

Der operator< gibt an, ob ein String im Wörterbuch dem anderen stehen würde. Die anderen Vergleichsoperatoren arbeiten entsprechend.

Der operator[]. Er wird auch Arrayzugriffs-Operator genannt. Er gibt das Zeichen an der angegebenen Position aus.

#include <iostream>
#include <string>
using namespace std;

void main()
{
   string vorname="Volkart";
   string nachname="Henkel";

   string name=vorname+string(" ")+nachname;
   name[6]='d';
   cout<<"Hallo, "<<name<<'!'<<endl;
};

Die Verwendung der Vergleichsoperatoren ist wohl am besten demonstriert, indem eine Liste mit Namen sortiert wird.

#include <iostream>
#include <string>
using namespace std;

void swap(string *pa,string *pb)
{
   string tmp=*pa;
   *pa=*pb;
   *pb=tmp;
};
void bubbleSort(string *array,int size)
{
   for(int obergrenze=size-1;obergrenze>0;--obergrenze)
   {
      for(int pos=0;pos<obergrenze;++pos)
      {
         if(array[pos]>array[pos+1])
            swap(&array[pos],&array[pos+1]);
      };
   };
};
void main()
{
   int i;
   const int ANZAHL_NAMEN=5;
   string namen[ANZAHL_NAMEN];
   cout<<"Bitte geben Sie "<<ANZAHL_NAMEN<<" Namen ein!"<<endl;
   for(i=0;i<ANZAHL_NAMEN;++i)
      cin>>namen[i];
   bubbleSort(namen,ANZAHL_NAMEN);
   cout<<"Die Namen sortiert:"<<endl;
   for(i=0;i<ANZAHL_NAMEN;++i)
      cout<<namen[i]<<endl;
};


Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00