C++-Strings: Ein freundlicher Leitfaden für Anfänger

Hallo da draußen, zukünftiger Codingsuperstar! Als Informatiklehrer mit jahrelanger Erfahrung freue ich mich, dich auf eine Reise durch die wunderbare Welt der C++-Strings mitzunehmen. Mach dir keine Sorgen, wenn du noch nie eine Zeile Code geschrieben hast – wir beginnen ganz am Anfang und arbeiten gemeinsam nach oben. Bis zum Ende dieses Tutorials wirst du mit den Besten mithalten können! (Entschuldigung, ich konnte einen kleinen String-Spieler nicht resistieren, um den Anfang zu machen!)

C++ Strings

Der C-Stil Zeichenkette

Lassen wir mit dem Urgroßvater aller Strings in C++ beginnen: der C-Stil Zeichenkette. Diese Strings sind ein Überbleibsel aus der Programmiersprache C, aber es ist wichtig, sie in C++ zu verstehen.

Was ist ein C-Stil String?

Ein C-Stil String ist im Wesentlichen ein Array von Zeichen, das mit einem speziellen Zeichnen endet, dem Nullterminator (\0). Dieser Nullterminator tells dem Computer, wo der String endet.

Hier ist ein einfaches Beispiel:

char begrüßung[] = "Hello";

In diesem Fall ist begrüßung tatsächlich ein 6-Zeichen-Array: {'H', 'e', 'l', 'l', 'o', '\0'}.

Arbeiten mit C-Stil Strings

Schauen wir uns einige häufige Operationen mit C-Stil Strings an:

  1. Deklarieren und Initialisieren:
char name[20] = "Alice";  // Deklariert einen String mit einer Maximalanzahl von 19 Zeichen (plus Nullterminator)
char stadt[] = "New York"; // Größe wird automatisch bestimmt
  1. Eingabe und Ausgabe:
#include <iostream>
#include <cstring>

int main() {
char lebensmittel[50];
std::cout << "Was ist dein Lieblingsessen? ";
std::cin.getline(lebensmittel, 50);
std::cout << "Ah, " << lebensmittel << " klingt lecker!" << std::endl;
return 0;
}

In diesem Beispiel verwenden wir cin.getline() um eine ganze Zeile Eingabe zu lesen, einschließlich Leerzeichen.

  1. String-Manipulation:

C-Stil Strings können mit Funktionen aus der <cstring> Bibliothek manipuliert werden. Hier sind einige häufige:

Funktion Beschreibung Beispiel
strlen() Länge des Strings ermitteln int len = strlen(name);
strcpy() Einen String in einen anderen kopieren strcpy(dest, src);
strcat() Strings verketten strcat(str1, str2);
strcmp() Strings vergleichen int ergebnis = strcmp(str1, str2);

Hier ist ein kleines Programm, das diese Funktionen verwendet:

#include <iostream>
#include <cstring>

int main() {
char vorname[20] = "John";
char nachname[20] = "Doe";
char voller_name[40];

std::cout << "Länge des Vornamens: " << strlen(vorname) << std::endl;

strcpy(voller_name, vorname);
strcat(voller_name, " ");
strcat(voller_name, nachname);

std::cout << "Voller Name: " << voller_name << std::endl;

if (strcmp(vorname, nachname) == 0) {
std::cout << "Vorname und Nachname sind gleich!" << std::endl;
} else {
std::cout << "Vorname und Nachname sind unterschiedlich." << std::endl;
}

return 0;
}

Dieses Programm demonstrates die Längenberechnung, Kopie, Verkettung und den Vergleich von Strings. quite nifty, nicht wahr?

Die String-Klasse in C++

Nun zu der moderneren und benutzerfreundlicheren Methode der Stringverarbeitung in C++: die std::string Klasse.

Einführung in std::string

Die std::string Klasse ist Teil der C++ Standardbibliothek und bietet eine viel benutzerfreundlichere Methode zur Arbeit mit Strings. Sie verwaltet den Speicher automatisch und verfügt über eine Reihe nützlicher Memberfunktionen.

Um std::string zu verwenden, müssen Sie die <string> Headerdatei einbinden:

#include <string>

Erstellen und verwenden von std::string Objekten

Schauen wir uns einige Beispiele an:

  1. Deklarieren und Initialisieren:
std::string begrüßung = "Hello, world!";
std::string name("Alice");
std::string leere_string;  // Erzeugt einen leeren String
  1. Eingabe und Ausgabe:
#include <iostream>
#include <string>

int main() {
std::string lieblings_farbe;
std::cout << "Was ist deine Lieblingsfarbe? ";
std::getline(std::cin, lieblings_farbe);
std::cout << "Ah, " << lieblings_farbe << " ist eine schöne Farbe!" << std::endl;
return 0;
}

Beachten Sie, wie wir std::getline() verwenden, um eine ganze Zeile Eingabe zu lesen, einschließlich Leerzeichen.

  1. Stringoperationen:

Die std::string Klasse bietet viele nützliche Memberfunktionen. Hier sind einige häufige:

Funktion Beschreibung Beispiel
length() oder size() Länge des Strings ermitteln int len = str.length();
empty() Überprüfen, ob der String leer ist if (str.empty()) { ... }
append() oder += Zum String hinzufügen str.append(" Welt"); oder str += " Welt";
substr() Teilstring erhalten std::string substr = str.substr(0, 5);
find() Teilstring finden size_t pos = str.find("hello");
replace() Teil des Strings ersetzen str.replace(0, 5, "Hi");

Lassen Sie uns diese in einem Programm verwenden:

#include <iostream>
#include <string>

int main() {
std::string sætze = "The quick brown fox jumps over the lazy dog";

std::cout << "Länge des Satzes: " << sætze.length() << std::endl;

if (!sætze.empty()) {
std::cout << "Der Satz ist nicht leer." << std::endl;
}

sætze += "!";  // Ein Ausrufezeichen anhängen
std::cout << "Aktualisierter Satz: " << sætze << std::endl;

std::string substr = sætze.substr(4, 5);  // "quick" erhalten
std::cout << "Teilstring: " << substr << std::endl;

size_t fox_pos = sætze.find("fox");
if (fox_pos != std::string::npos) {
std::cout << "'fox' an Position gefunden: " << fox_pos << std::endl;
}

sætze.replace(fox_pos, 3, "cat");
std::cout << "Nach dem Ersatz: " << sætze << std::endl;

return 0;
}

Dieses Programm demonstrates verschiedene Stringoperationen wie Längenbestimmung, Leerprüfungen, Anhängen, Teilstringerstellung, Suchen und Ersetzen.

Vergleichen von C-Stil Strings und std::string

Während C-Stil Strings immer noch in einigen Kontexten verwendet werden (insbesondere bei der Schnittstelle zu C-Code), wird std::string in der modernen C++ in der Regel bevorzugt aus mehreren Gründen:

  1. Automatische SpeicherVerwaltung
  2. Sicherer und einfacher zu bedienen
  3. Bequemere Operationen (wie Verkettung mit dem + Operator)
  4. Reichhaltiges Set von Memberfunktionen

Hier ist ein schneller Vergleich:

// C-Stil String
char cstr1[20] = "Hello";
char cstr2[20];
strcpy(cstr2, cstr1);  // Kopieren
strcat(cstr1, " World");  // Verketten

// std::string
std::string str1 = "Hello";
std::string str2 = str1;  // Kopieren
str1 += " World";  // Verketten

Wie Sie sehen, sind std::string Operationen intuitiver und weniger fehleranfällig.

Schlussfolgerung

Glückwunsch! Du hast deine ersten Schritte in die Welt der C++-Strings unternommen. Wir haben C-Stil Strings, die etwas altmodisch sind, aber immer noch wichtig zu wissen, und die modernere und benutzerfreundlichere std::string Klasse behandelt.

Denke daran, Übung macht den Meister. Versuche, einige Programme mit beiden Arten von Strings zu schreiben, um das Gelernte zu festigen. Vor dir liegt noch eine Welt der Möglichkeiten! Who knows, vielleicht schreibst du eines Tages deine eigene Stringbibliothek. Bis dahin, weiter codieren, weiter lernen und vor allem: Spaß haben!

Credits: Image by storyset