C++ String-Funktionen: strcpy(), strcat(), strlen(), strcmp()

โšก Intelligente Zusammenfassung

C++ Stringfunktionen wie `strcpy`, `strcat`, `strlen` und `strcmp` ermรถglichen es Programmen, Text zu kopieren, zusammenzufรผgen, zu messen und zu vergleichen. Diese Ressource erklรคrt, was ein String ist, wie man Strings im C-Stil und vom Typ `std::string` deklariert, auf deren Werte zugreift und die wichtigsten Stringfunktionen anhand von Beispielen anwendet.

  • ๐Ÿ”ค Kerndefinition: Eine Zeichenkette ist eine Folge von Zeichen; eine C++ string ist ein Objekt der Klasse std::string.
  • ๐Ÿงฑ Zwei Erklรคrungen: C++ Unterstรผtzt C-Zeichenarrays, die mit '\0' abgeschlossen werden, sowie den sichereren Klassentyp std::string.
  • ๐Ÿ“ฅ Zugriff auf Werte: Zeichenketten werden anhand ihres Namens gelesen und ausgegeben, wie anhand von char-Arrays und std::string demonstriert wird.
  • ๏ธ Zeichenkettenfunktionen: strcpy kopiert, strcat verkettet, strlen misst die Lรคnge und strcmp vergleicht zwei Zeichenketten.
  • ๐Ÿ“ฆ Kopfzeile erforderlich: Die C-String-Funktionen befinden sich in der cstring-Headerdatei, die vor der Verwendung eingebunden werden muss.

C++ String-Funktionen

Was ist eine Zeichenfolge?

Ein String ist eine Folge von Zeichen. C++ Ein String ist ein Objekt der Klasse std::string. Die Zeichen werden als Bytefolgen gespeichert, wobei der Zugriff auf ein einzelnes Zeichenbyte erlaubt ist.

C++ Strings zuweisen Speicher dynamisch. Bei Bedarf kann zur Laufzeit zusรคtzlicher Speicher fรผr den String reserviert werden. Da keine Speichervorabreservierung erfolgt, entsteht keine Speicherverschwendung. Wir kรถnnen verschiedene Operationen mit Strings durchfรผhren, darunter Vergleiche, Verkettungen, Konvertierungen usw.

Strings deklarieren

C++ unterstรผtzt zwei Arten von Zeichenfolgendeklarationen:

  • Zeichenfolge im C-Stil
  • String-Klassentyp

Zeichenfolge im C-Stil

Diese Art von String-Deklaration wurde eingefรผhrt in der Programmiersprache C. C++ Es wird weiterhin unterstรผtzt. Es handelt sich lediglich um ein eindimensionales Array von Zeichen, das mit einem Nullzeichen (\0) abgeschlossen wird. Eine nullterminierte Zeichenkette besteht aus den Zeichen, aus denen die Zeichenkette besteht, gefolgt von einem Nullzeichen.

Betrachten Sie die unten angegebene String-Deklaration:

char name[5] = {'J', 'o', 'h', 'n', '\0'};

Die obige Deklaration erzeugt eine Zeichenkette, die das Wort โ€žJohnโ€œ bildet. Das Wort besteht aus 4 Zeichen, die Zeichenkette selbst hat jedoch eine Lรคnge von 5 Zeichen. Der zusรคtzliche Platz dient der Aufnahme des Nullzeichens.

Mit der Array-Initialisierungsregel kรถnnen wir die obige Anweisung wie folgt schreiben:

char name[] = "John";

Beachten Sie, dass Sie das Nullzeichen nicht am Ende der Zeichenkettenkonstante einfรผgen mรผssen. C++ Der Compiler fรผgt beim Initialisieren des Arrays automatisch โ€ž\0โ€œ am Ende der Zeichenfolge ein.

std::string

Die Standard C++ Die Bibliothek stellt die String-Klasse bereit, die verschiedene String-Operationen unterstรผtzt. Sie ist als std::string geschrieben.

Um diese Klasse zu verwenden, mรผssen wir sie zuerst mit dem Prรคprozessor #include in unseren Arbeitsbereich einbinden, wie unten gezeigt:

#include <string>

Als nรคchstes kรถnnen wir unseren String mit dem Schlรผsselwort string deklarieren. Zum Beispiel:

string name = "John";

Die obige Anweisung erstellt eine Zeichenfolge mit dem Namen โ€žnameโ€œ, die den Wert โ€žJohnโ€œ enthรคlt.

Auf Zeichenfolgenwerte zugreifen

In C++kรถnnen wir รผber den String-Namen auf die String-Werte zugreifen. Zum Beispiel:

#include <iostream>
using namespace std;
int main() {
	char name[5] = { 'J', 'o', 'h', 'n', '\0' };
	cout << "String value is: ";
	cout << name << endl;
	return 0;
}

Ausgang:

Auf Zeichenfolgenwerte zugreifen

Hier ist ein Screenshot des Codes:

Auf Zeichenfolgenwerte zugreifen

Code Erlรคuterung:

  1. Einbinden der iostream-Header-Datei in unseren Code. Dadurch kรถnnen wir von der Konsole lesen und darauf schreiben.
  2. EinschlieรŸlich des std-Namespace, um seine Klassen und Funktionen zu verwenden, ohne ihn aufzurufen.
  3. Die main()-Funktion wird aufgerufen, in die die Programmlogik eingefรผgt werden soll. Die geschweifte Klammer { markiert den Beginn des Funktionskรถrpers der main()-Funktion.
  4. Deklarieren Sie eine Zeichenfolge und geben Sie ihr den Namen name. Die Zeichenfolge speichert den Wert John. Der zusรคtzliche Platz speichert das Nullzeichen.
  5. Einen Text auf der Konsole drucken.
  6. Drucken des Werts der Zeichenfolge namens name auf der Konsole.
  7. Die Funktion main() sollte einen Wert zurรผckgeben, wenn das Programm einwandfrei lรคuft.
  8. Ende des Hauptteils der main()-Funktion.

Hier ist ein weiteres Beispiel mit dem C++ Standard-String-Klasse:

#include <iostream>
#include <string>
using namespace std;
int main() {

	string name = "Guru99";

	cout << "The name is : " << name << endl;

	return 0;
}

Ausgang:

Auf Zeichenfolgenwerte zugreifen

Hier ist ein Screenshot des Codes:

Auf Zeichenfolgenwerte zugreifen

Code Erlรคuterung:

  1. Einbinden der iostream-Header-Datei in unseren Code. Dadurch kรถnnen wir von der Konsole lesen und darauf schreiben.
  2. Einbindung der Standard-String-Klasse in unseren Code.
  3. EinschlieรŸlich des std-Namespace, um seine Klassen und Funktionen zu verwenden, ohne ihn aufzurufen.
  4. Die main()-Funktion wird aufgerufen, in die die Programmlogik eingefรผgt werden soll. Die geschweifte Klammer { markiert den Beginn des Funktionskรถrpers der main()-Funktion.
  5. Eine Zeichenkette wird deklariert und ihr der Name โ€žnameโ€œ gegeben. Die Zeichenkette speichert den Wert Guru99
  6. Drucken des Werts des Zeichenfolgennamens zusammen mit etwas Text auf der Konsole.
  7. Die Funktion main() sollte einen Wert zurรผckgeben, wenn das Programm einwandfrei lรคuft.
  8. Ende des Hauptteils der main()-Funktion.

String-Funktionen in C++

Sie mรถchten Zeichenfolgen hรคufig bearbeiten. C++ bietet eine breite Palette von Funktionen, die Sie dafรผr verwenden kรถnnen. Diese Funktionen sind definiert in der Da es sich um eine Header-Datei handelt, mรผssen wir sie in unseren Code einbinden, um die Funktionen nutzen zu kรถnnen. Betrachten wir einige davon genauer:

strcpy ()

Dies ist die String-Kopierfunktion. Es kopiert eine Zeichenfolge in eine andere Zeichenfolge.

Syntax:

strcpy(string1, string2);

Die beiden Parameter der Funktion, string1 und string2, sind Zeichenketten. Die Funktion kopiert die Zeichenkette string2 in string1.

strcat()

Dies ist die Funktion zum Verketten von Zeichenfolgen. Es verkettet Zeichenfolgen.

Syntax:

strcat(string1, string2);

Die beiden Parameter der Funktion, string1 und string2, sind die zu verkettenden Zeichenketten. Die obige Funktion verkettet die Zeichenkette string2 an das Ende der Zeichenkette string1.

strlen ()

Dies ist die Stringlรคngenfunktion. Es gibt die Lรคnge der Zeichenfolge zurรผck, die ihm als Argument รผbergeben wurde.

Syntax:

strlen(string1);

Der Parameter string1 ist der Name des Strings, dessen Lรคnge ermittelt werden soll. Die obige Funktion gibt die Lรคnge der Zeichenfolge string1 zurรผck.

strcmp()

Dies ist die String-Vergleichsfunktion. Es wird zum String-Vergleich verwendet.

Syntax:

strcmp(string1, string2);

Die obige Funktion gibt 0 zurรผck, wenn die Zeichenketten string1 und string2 รคhnlich sind, einen Wert kleiner als 0, wenn string1 < string2, und einen Wert grรถรŸer als 0, wenn string1 > string2.

Ejemplo:

Das folgende Beispiel demonstriert die Verwendung der obigen Zeichenfolgenfunktionen:

#include <iostream>
#include <cstring>
using namespace std;
int main() {

	char name1[10] = "Guru99";
	char name2[10] = "John";
	char name3[10];

	int len;
	strcpy(name3, name1);
	cout << "strcpy( name3, name1) : " << name3 << endl;

	strcat(name1, name2);
	cout << "strcat( name1, name2): " << name1 << endl;

	len = strlen(name1);
	cout << "strlen(name1) : " << len << endl;
	return 0;
}

Ausgang:

String-Funktionen in C++

Hier ist ein Screenshot des Codes:

String-Funktionen in C++

Code Erlรคuterung:

  1. Einbinden der iostream-Header-Datei in unseren Code. Dadurch kรถnnen wir von der Konsole lesen und darauf schreiben.
  2. einschlieรŸlich des Standards Header in unserem Code.
  3. EinschlieรŸlich des std-Namespace, um seine Klassen und Funktionen zu verwenden, ohne ihn aufzurufen.
  4. Die main()-Funktion wird aufgerufen, in die die Programmlogik eingefรผgt werden soll. Die geschweifte Klammer { markiert den Beginn des Funktionskรถrpers der main()-Funktion.
  5. Eine Zeichenkette mit 10 Zeichen wird deklariert und mit dem Namen name1 bezeichnet. Die Zeichenkette speichert den Wert Guru99
  6. Deklarieren Sie eine Zeichenfolge mit 10 Zeichen und geben Sie ihr den Namen name2. Die Zeichenfolge speichert den Wert John.
  7. Deklarieren Sie eine Zeichenfolge mit 10 Zeichen und geben Sie ihr den Namen name3.
  8. An deklarieren ganzzahlige Variable namens len.
  9. Kopieren der Zeichenfolge name1 in die Zeichenfolge name3.
  10. Den Wert der Zeichenkette โ€žname3โ€œ zusammen mit etwas Text in der Konsole ausgeben. Es sollte Folgendes ausgegeben werden: Guru99
  11. Die Zeichenkette name2 wird an das Ende der Zeichenkette name1 angehรคngt. Der Wert von name1 ist nun Guru99. Johannes.
  12. Den Wert der Zeichenkette โ€žname1โ€œ zusammen mit etwas Text in der Konsole ausgeben. Es sollte Folgendes ausgegeben werden: Guru99. Johannes.
  13. Die Lรคnge der Zeichenkette namens name1 wird ermittelt und der Wert der Lรคnge der Variablen len zugewiesen.
  14. Den Wert der Variable len zusammen mit einem anderen Text in der Konsole ausgeben.
  15. Die Funktion main() sollte einen Wert zurรผckgeben, wenn das Programm einwandfrei lรคuft.
  16. Ende des Hauptteils der main()-Funktion.

Hรคufig gestellte Fragen

Ja. KI-Assistenten kรถnnen char-Arrays in std::string umwandeln, zugehรถrige Funktionen aktualisieren und die Sicherheitsvorteile erlรคutern. Entwickler sollten die ร„nderungen dennoch auf Grenzfรคlle, PuffergrรถรŸen und das beabsichtigte Verhalten รผberprรผfen.

Ja. KI-Tools generieren durchgerechnete Beispiele, erklรคren das Verhalten von `strcpy` und `strcat` und weisen auf Pufferรผberlaufrisiken hin. Dies beschleunigt das Verstรคndnis, aber das Ausfรผhren des Codes selbst ist nach wie vor der beste Weg, das Verhalten zu bestรคtigen.

std::string verwaltet den Speicher dynamisch und bietet integrierte Operationen wie Verkettung und Vergleich. C-Strings hingegen sind feste Zeichenketten, die mit '\0' abgeschlossen werden und daher eine manuelle Speicherverwaltung erfordern und fehleranfรคlliger sind.

Sie kรถnnen Pufferรผberlรคufe verursachen, wenn das Ziel-Array zu klein ist. Sicherere Alternativen sind beispielsweise `strncpy`, `strncat` oder die Verwendung von `std::string`-Operationen, die den Speicher automatisch verwalten und diese Risiken reduzieren.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: