C++ String‑Funktionen meistern: strcpy, strcat, strlen, strcmp – Praxisbeispiele
Was ist ein String?
Ein String ist schlicht eine Folge von Zeichen. In modernem C++ arbeitet man meist mit Objekten der Klasse std::string, die Speicherverwaltung, Größenänderung und zahlreiche nützliche Member‑Funktionen automatisch übernimmt. Das eliminiert manuelles Puffer‑Management und verringert das Risiko von Pufferüberläufen.
Zu Lehrzwecken unterstützt C++ weiterhin traditionelle C‑Style‑Null‑terminierte Zeichenarrays. Beide Ansätze haben ihre Berechtigung: std::string für die tägliche Programmierung, C‑Style‑Strings für Legacy‑APIs oder performance‑kritischen Low‑Level‑Code.
Strings deklarieren
- C‑Style‑Zeichenkette: ein eindimensionales
char‑Array, das mit einem Null‑Zeichen (\0) endet. - std::string: eine Klasse aus der C++‑Standardbibliothek mit reichhaltigem Interface zur String‑Manipulation.
C‑Style‑Zeichenkette
Beispiel:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
oder kürzer:
char name[] = "John"; // Compiler fügt terminierendes '\0' ein
std::string
Zur Nutzung von std::string Header einbinden und Variable deklarieren:
#include <string> std::string name = "John";
Auf String‑Werte zugreifen
Einfaches Konsolenprogramm, das einen C‑Style‑String und einen std::string‑Wert ausgibt:
#include <iostream>
#include <string>
using namespace std;
int main() {
char cName[5] = "John"; // C‑Style‑String
string cppName = "Guru99"; // std::string
cout << "C‑Style‑String: " << cName << endl;
cout << "std::string: " << cppName << endl;
return 0;
}
Ausgabe:

Wichtige C‑String‑Funktionen
Diese Funktionen sind im Header cstring definiert. Sie arbeiten auf C‑Style‑Strings (null‑terminierte char‑Arrays).
strcpy()
Kopiert den Quell‑String in den Ziel‑Puffer. Der Ziel‑Puffer muss groß genug sein, um den Quell‑String aufzunehmen.
strcpy(ziel, quelle); // ziel muss ausreichend Platz bieten
strcat()
Hängt den Quell‑String an das Ende des Ziel‑Strings an. Auch hier muss der Ziel‑Puffer groß genug für das Ergebnis sein.
strcat(ziel, quelle); // ziel muss ausreichend Platz bieten
strlen()
Gibt die Anzahl der Zeichen im String zurück, ohne das abschließende Null‑Byte.
size_t len = strlen(str);
strcmp()
Vergleicht zwei Strings lexikographisch. Liefert 0 bei Gleichheit, einen negativen Wert, wenn der erste String kleiner ist, und einen positiven Wert, wenn er größer ist.
int cmp = strcmp(str1, str2);
Praxisbeispiel
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char name1[10] = "Guru99";
char name2[10] = "John";
char name3[20]; // groß genug für konkatenierten String
// Kopieren
strcpy(name3, name1);
cout << "strcpy(name3, name1): " << name3 << endl;
// Konkatenieren
strcat(name1, name2);
cout << "strcat(name1, name2): " << name1 << endl;
// Länge
size_t len = strlen(name1);
cout << "strlen(name1): " << len << endl;
// Vergleich
int cmp = strcmp(name1, name3);
cout << "strcmp(name1, name3): " << cmp << endl;
return 0;
}
Ausgabe:

Fazit
- Für die meisten C++‑Code
std::stringverwenden – sicherer und einfacher. - Bei rohen Zeichenarrays sind die
cstring‑Funktionen unverzichtbar. - Ziel‑Puffer immer groß genug dimensionieren, um Überläufe zu vermeiden.
strlennur nutzen, wenn die Länge gebraucht wird;std::string::size()ist fürstd::string‑Objekte vorzuziehen.- Für Legacy‑APIs
strcmpnutzen; in modernem C++ bietenstd::string::compare()oder der überladeneoperator==klarere Semantik.
C Sprache
- Java Strings meistern: Erstellung, Methoden und Best Practices
- String-Repräsentationen in Java Enums meistern
- C++ Variablen und Datentypen: Experten‑Guide zu int, double, char, string, bool
- C++ Arrays verstehen: Deklaration, Initialisierung und Pointer‑Techniken
- C++ do‑while‑Schleife: Syntax, Praxisbeispiele und verschachtelte Schleifen
- C++ Zeiger meistern: Konzepte, Beispiele & praktische Anwendungen
- C++ char‑Datentyp meistern: Deklaration, ASCII & Konvertierungstechniken
- C++ Operator‑Overloading: Praktischer Leitfaden mit Code‑Beispielen
- C++-Funktionen erklärt: Mit praktischen Code-Beispielen
- C Strings einfach gemacht: Deklaration, Ein- & Ausgabe, Bibliotheksfunktionen