Alles, was Sie über Strings in C ++ wissen müssen

In diesem Artikel erhalten Sie detaillierte und umfassende Kenntnisse über Strings in C ++ sowie Beispiele für verschiedene Vorgänge.

Der Begriff bedeutet eine geordnete Folge von Zeichen. Eine Folge von Zeichen kann mit einem Objekt einer Klasse in C ++ dargestellt werden. Die Klasse, die eine Definition dafür bereitstellt, wird als String-Klasse bezeichnet. Die String-Klasse speichert die Zeichen als eine Folge von Bytes mit der Funktionalität, den Zugriff auf das Einzelbyte-Zeichen zu ermöglichen. In C ++ sind die einschließenden Trennzeichen doppelte Anführungszeichen. In diesem Artikel 'Strings in C ++' werde ich die folgenden Themen behandeln:

Unterschied zwischen Zeichenfolgenklasse und Zeichenarray

String-Klasse Zeichenarray
Die String-Klasse ist eine Klasse, die Objekte definiert, die als Zeichenstrom dargestellt werden könnenZeichenarray ist einfach ein Array von Zeichen.
Bei Zeichenfolgen wird der Speicher dynamisch zugewiesen, sodass bei Bedarf zur Laufzeit mehr Speicher zugewiesen werden kannDie Größe des Zeichenarrays muss statisch zugewiesen werden, sodass bei Bedarf nicht mehr Speicher zur Laufzeit zugewiesen werden kann
Die String-Klasse definiert eine Reihe von Funktionen, die vielfältige Operationen an Strings ermöglichen.Zeichenarrays bieten nicht viele integrierte Funktionen zum Bearbeiten von Zeichenfolgen
Zeichenfolgen sind im Vergleich zur Implementierung langsamer als das Zeichenarray.Implementierung eines Zeichenarrays ist Schneller.

Deklarieren und initialisieren Sie eine Zeichenfolge in C ++

strings-in-c++Die Initialisierung von Zeichenfolgen in C ++ ist ziemlich einfach!. Wir können eine der folgenden Methoden anwenden.



Verwenden des Namespace std string std_string

oder

std :: string std_string
#include using namespace std int main () {char ch [12] = {'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} string st = 'Hallo von st' std :: string std_st = 'Hallo von std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

Ausgabe:

Hallo von ch Hallo von st Hallo von std_st

In diesem Beispiel haben wir sowohl das Zeichenarray (ch) als auch die Zeichenfolge cl gezeigtInitialisierungsmethoden ass (st und std_st). Zuerst haben wir die Zeichenarray-Methode verwendet, indem wir ein Zeichenarray ch [12] definiert haben, das 12 Elemente enthält und mit einem Nullzeichen endet. Im zweiten Teil haben wir eine String-Klassenmethode verwendet.

Operationen an Strings in C ++

Der Vorteil der Verwendung der Zeichenfolgenklasse besteht darin, dass in C ++ mehrere Funktionen integriert sind, um sie zu bearbeiten. Dies macht die Programmierung einfach und effektiv. Lassen Sie uns einige wichtige Funktionen zur Manipulation von Zeichenfolgen aufgreifen und sie anhand einiger Beispiele verstehen.

Stringgröße: Sowohl die Methoden size () als auch length () können verwendet werden, um die Größe des Objekts zurückzugeben.

Kosten<< st.length() <

Ausgabe:

11 11

String-Verkettung: Wir können zwei oder mehr Zeichenfolgen einfach mit dem Operator + verketten

Zeichenfolge new_string = st + 'und' + std_st cout<< new_string <

Ausgabe:

Hallo von st und Hallo von std_st

Anhängen von Zeichenfolgen: Mit der Klassenmitgliedsfunktion .append (Zeichenfolge) können Sie eine Zeichenfolge an einer bestimmten Zeichenposition in der Zeichenfolge verketten und anhängen. Wenn ein Programmierer str.append (str1, p, n) setzt, bedeutet dies, dass n Zeichen von Position p in Zeichenfolge str1 an das Ende der str angehängt werden.

string str = 'Ich lerne gerne' string str1 = 'Python, C ++ oder C' str.append (str1, 8, 3) cout<< str << endl

Ausgabe:

Ich lerne gerne C ++

Zeichenfolgen suchen: Wir können die find () -Mitgliedsfunktion verwenden, um das erste Auftreten eines Strings in einem anderen zu finden. find () sucht ab Position pos nach einer String-Nadel im String-Heuhaufen und gibt die Position des ersten Auftretens der Nadel zurück. Die Funktion rfind () funktioniert ähnlich, gibt jedoch das letzte Vorkommen der übergebenen Zeichenfolge zurück.

string haystack = 'Hallo Welt!' Saitennadel = 'o' cout<< haystack.find(needle)<

Ausgabe:

4 4 7 4294967295

Der erste cout-Befehl gibt einfach '4' aus. Dies ist der Index für das erste Auftreten von 'o' in der Heuhaufenzeichenfolge. Wenn wir das 'o' in 'Welt' wollen, müssen wir 'pos' so ändern, dass es nach dem ersten Vorkommen zeigt. haystack.find (Nadel, 4) würde wieder 4 zurückgeben, während haystack.find (Nadel, 5) 7 ergeben würde. Wenn der Teilstring nicht gefunden wird, gibt find () std :: string :: npos zurück.

Npos ist ein spezieller Wert, der dem Maximalwert entspricht, der durch den Typ size_type dargestellt werden kann. Hier ist es 4294967295. Im Allgemeinen wird es entweder als Indikator für das Ende des Strings von den Funktionen verwendet, die einen String-Index erwarten, oder als Fehlerindikator von den Funktionen, die einen String-Index zurückgeben.

Dieser einfache Code durchsucht eine Zeichenfolge nach allen Vorkommen von 'C ++' in str2 und druckt ihre Positionen aus:

string str2 = 'C ++ ist eine objektorientierte Programmiersprache und umfasst Klassen, Vererbung, Polymorphismus, Datenabstraktion und Kapselung. C ++ ermöglicht die Ausnahmebehandlung und Funktionsüberladung, die in C.C ++ nicht möglich ist, ist eine leistungsstarke, effiziente und schnelle Sprache. ' for (string :: size_type i = 0, tfind (tfind = wikistr.find ('C ++', i))! = string :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

Ausgabe:

Vorkommen von 'C ++' an Position 0 gefunden Vorkommen von 'C ++' an Position 132 gefunden Vorkommen von 'C ++' an Position 217 gefunden
#include using Namespace std class base {public: void fun_1 () {cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { cout fun_2 () // Späte Bindung (RTP) ptr-> fun_3 () // Späte Bindung (RTP) ptr-> fun_4 () // Frühe Bindung, aber dieser Funktionsaufruf ist // illegal (erzeugt Fehler), weil Zeiger // ist vom Basistyp und der Funktion ist von der // abgeleiteten Klasse // p-> fun_4 (5)}

Ausgabe:

Beschaffungsmanagement im Projektmanagement
Basisklassenfunktion 1 abgeleitete Klassenfunktion 2 Basisklassenfunktion 3 Basisklassenfunktion 4

Damit beenden wir diesen Artikel über Strings in C ++. Ich hoffe, Sie haben ein Verständnis für die verschiedenen Operationen, die darauf ausgeführt werden können. Wenn Sie mehr erfahren möchten, lesen Sie das Java-Training von Edureka, einem vertrauenswürdigen Online-Lernunternehmen. Edurekas Der Schulungs- und Zertifizierungskurs soll Sie sowohl für grundlegende als auch für fortgeschrittene Java-Konzepte sowie für verschiedene Java-Frameworks wie Hibernate & Spring schulen.

Hast du eine Frage an uns? Bitte erwähne es im Kommentarbereich dieses Blogs und wir werden uns so schnell wie möglich bei dir melden.