Datentyp string in C++

In C++ wird der Datentyp string verwendet, um Zeichenketten zu speichern und zu verarbeiten. Anders als der C-String (ein Array von char-Elementen mit Null-Terminierung) ist der string-Typ eine komfortable Klasse aus der Standardbibliothek (<string>), die viele nützliche Funktionen zur Bearbeitung von Zeichenketten bietet.

Deklaration und Initialisierung

Ein string kann folgendermaßen deklariert und initialisiert werden:

#include <iostream>
#include <string> // Notwendig für string
using namespace std;
 
int main() {
    string text = "Hallo, Welt!";
    cout << text << endl;
    return 0;
}

Wichtige Methoden von string

Range-basierte for-Schleife in C++

Die range-basierte for-Schleife ist eine moderne und vereinfachte Form der Schleife in C++, mit der man alle Elemente einer Sammlung (z. B. string, vector, Array) bequem durchlaufen kann – ganz ohne Zählvariable.

Syntax

for (Datentyp variable : sammlung)
{
    // Anweisungen
}

Beispiel mit string

#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string text = "Hallo";
 
    for (char c : text)
    {
        cout << c << endl;
    }
 
    return 0;
}

Ausgabe:

H
a
l
l
o

Vorteile

Hinweis zur Referenz

Wenn man die Elemente verändern möchte, muss man mit Referenz arbeiten:

vector<int> zahlen = {1, 2, 3};
 
for (int& z : zahlen)
{
    z = z * 2;
}

Ohne das & (Referenz) wird nur eine Kopie des Wertes verändert – nicht das Original.

Einschränkungen

Fazit

Die range-basierte for-Schleife ist ideal, wenn man alle Elemente einer Sammlung durchlaufen, aber keinen Index braucht. Sie ist übersichtlich, kompakt und sicher.

Weitere nützliche Methoden von string

Beispiele

1. Einfache Zeichenkettenverarbeitung

#include <iostream>
#include <string>
using namespace std;
 
int main() {
    string name;
    cout << "Geben Sie Ihren Namen ein: ";
    cin >> name;
    cout << "Hallo, " << name << "!" << endl;
    return 0;
}

Hinweis: cin liest nur bis zum ersten Leerzeichen. Um eine ganze Zeile einzulesen, nutzt man getline().

    string text;
    cout << "Gib einen Text ein: ";
    getline(cin, text);  // Liest die gesamte Zeile ein
    cout << text;

2. Zeichenkette bearbeiten

include <iostream>
#include <string>
using namespace std;
 
int main() {
    string s = "C++ ist toll!";
    s.insert(8, "wirklich ");
    cout << s << endl;
    return 0;
}

Ausgabe: C++ ist wirklich toll!

3. Zeichenkettenvergleich

#include <iostream>
#include <string>
using namespace std;
 
int main() {
    string passwort = "geheim";
    string eingabe;
    cout << "Passwort eingeben: ";
    cin >> eingabe;
 
    if (eingabe == passwort) {
        cout << "Zugang gewährt!" << endl;
    } else {
        cout << "Falsches Passwort!" << endl;
    }
    return 0;
}

4. Ausgabe von einzelnen Zeichen

    string text;
    cout << "Gib einen Text ein: ";
    cin >> text;  // Nur ein Wort einlesen
 
    cout << "Einzelne Zeichen der Eingabe:\n";
    for (int i = 0; i < text.length(); i++) {
        cout << "text[" << i << "] = " << text[i] << endl;
    }
 
    return 0;

Aufgaben

Beginner

1. Zeichenkette eingeben und ausgeben

Schreibe ein Programm, das eine Zeichenkette vom Benutzer einliest und ausgibt.

2. Länge einer Zeichenkette bestimmen

Schreibe ein Programm, das eine Zeichenkette einliest und deren Länge ausgibt.

3. Zeichen an bestimmter Position ausgeben

Schreibe ein Programm, das eine Zeichenkette einliest und das Zeichen an einer bestimmten Position ausgibt.

4. Zeichenkette rückwärts ausgeben

Schreibe ein Programm, das eine Zeichenkette einliest und sie rückwärts ausgibt.

5. Vorkommen eines Zeichens zählen

Schreibe ein Programm, das eine Zeichenkette einliest und zählt, wie oft ein bestimmtes Zeichen vorkommt.

Intermediate

6. Zeichenkette in Großbuchstaben umwandeln

Schreibe ein Programm, das eine Zeichenkette einliest und alle Buchstaben in Großbuchstaben umwandelt.

7. Zeichenkette in Kleinbuchstaben umwandeln

Schreibe ein Programm, das eine Zeichenkette einliest und alle Buchstaben in Kleinbuchstaben umwandelt.

8. Palindrom überprüfen

Schreibe ein Programm, das prüft, ob eine eingegebene Zeichenkette ein Palindrom ist (vorwärts und rückwärts gleich).

9. Leerzeichen entfernen

Schreibe ein Programm, das eine Zeichenkette einliest und alle Leerzeichen entfernt.

10. Teilstring suchen

Schreibe ein Programm, das prüft, ob eine Zeichenkette in einer anderen Zeichenkette vorkommt.

Advanced

11. Wortanzahl bestimmen

Schreibe ein Programm, das die Anzahl der Wörter in einer eingegebenen Zeichenkette zählt.

12. Erstes und letztes Wort ausgeben

Schreibe ein Programm, das das erste und das letzte Wort einer eingegebenen Zeichenkette ausgibt.

13. Zeichen ersetzen

Schreibe ein Programm, das in einer Zeichenkette alle Vorkommen eines bestimmten Zeichens durch ein anderes ersetzt.

14. Anagramm überprüfen

Schreibe ein Programm, das überprüft, ob zwei eingegebene Zeichenketten Anagramme sind (gleiche Buchstaben in anderer Reihenfolge).

15. Häufigstes Zeichen finden

Schreibe ein Programm, das das häufigste Zeichen in einer Zeichenkette ermittelt und ausgibt.