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!)
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:
- 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
- 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.
- 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:
- Deklarieren und Initialisieren:
std::string begrüßung = "Hello, world!";
std::string name("Alice");
std::string leere_string; // Erzeugt einen leeren String
- 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.
- 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:
- Automatische SpeicherVerwaltung
- Sicherer und einfacher zu bedienen
- Bequemere Operationen (wie Verkettung mit dem
+
Operator) - 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