C ++ Substring vom Index zu Index

C ++ Substring vom Index zu Index
Ein Unterstring oder Substring oder Reichweite ist nur ein Teil einer Abfolge von Zeichen innerhalb des String-Literales. Zu wissen, was ein Substring in C ++ ist, reicht für einen Programmierer nicht aus. Der Programmierer muss verstehen, wie das Substring durch Code identifiziert werden kann. Der Programmierer muss wissen, wie er ein Substring zurückgibt. Der Programmierer muss wissen, wie man ein Substring löschen. Der Programmierer muss wissen, wie ein Substring nach dem Löschen ersetzt werden kann.

Eine Zeichenfolge kann auf zwei Hauptarten erstellt werden: durch const char* (Array-of-Carray) oder Instanzipen aus der String-Klasse. Im Fall der Instanziierung aus der String -Klasse muss die String -Bibliothek im C ++ - Programm aufgenommen werden. Das Identifizieren, Rückkehr, Löschen und Ersetzen eines Substrings in C ++ wird normalerweise nur mit dem String -Objekt aus der String -Klasse durchgeführt.

Das String -Objekt ist eine Datenstruktur mit Methoden (Mitgliederfunktionen). Die Liste besteht aus Elementen, bei denen jedes Element einen Charakter hat. Die Listenwerte sind die Zeichen. Wie ein Array kann auf jedes Zeichen des String -Objekts von einem Index zugegriffen werden. Ein Unterstring kann also durch Indexes identifiziert werden: ein niedrigerer Index und ein höherer Index. Der Bereich beginnt vom niedrigeren Index zum höheren Index, ausgenommen dem höheren Index. Das Charakter für den höheren Index ist nicht im Bereich enthalten, und die Länge der Unterstring ist vom Charakter des unteren Index bis zum Charakter kurz vor dem des höheren Index.

Zwei Iteratoren können auch einen Substring oder Bereich identifizieren: Der erste Iterator ist für den Beginn des Bereichs und der letzte Iterator für den Charakter, der kurz nach dem tatsächlichen letzten Charakter (oder am Ende des Sazens) vorliegt,. Es gibt eine einfache Beziehung zwischen Iterator und Index - siehe unten.

In diesem Artikel wird erläutert, was ein Substring ist und wie ein Substring in C identifiziert, zurückgegeben, löscht und ersetzt wird++.

Artikelinhalt

  • Identifizierung und Rückgabe eines Substrings
  • Iterator und Index in Beziehung
  • Substring löschen
  • Ersetzen eines Substrings
  • Abschluss

Identifizierung und Rückgabe eines Substrings

Die C ++-Klasse hat eine Mitgliedsfunktion namens Substr () für Sub-String (). Die Syntax ist:

Basic_string substr (size_type pos = 0, size_type n = npos) const

Diese Funktion gibt das Substring als String -Objekt zurück. Das erste Argument gibt die Indexposition an, in der das Substring beginnt. Der Charakter von POS ist im Substring enthalten. Das zweite Argument gibt die Länge des Substrings an. Die Länge ist die Anzahl der Zeichen, die von POS beginnen. Es enthält nicht das Charakter für den höheren Index. Der höhere Index ist: POS + NPOS (obwohl die Länge, NPOs, gemessen wird, verschoben einen Platz nach links). Die Indexzählung beginnt von Null. Das folgende Programm zeigt die Verwendung dieser Mitgliedsfunktion:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
String str = "One_two_three_four_five";
String substrin = str.Substr (8, 5);
Cout << substrin << endl;
Rückkehr 0;

Die Ausgabe ist:

drei

Wenn diese beiden Argumente nicht vorhanden sind, wird die gesamte Zeichenfolge berücksichtigt, wie im folgenden Programm dargestellt:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
String str = "One_two_three_four_five";
String substrin = str.substr ();
Cout << substrin << endl;
Rückkehr 0;

Die Ausgabe ist:

eins zwei drei vier fünf

Das reservierte Wort, const am Ende der Syntax. Es löscht die Unterstring nicht.

Iterator und Index in Beziehung

Wenn ein Iterator auf einen Charakter zeigt, um den Iterator für das Ende des Bereichs zu erhalten, fügen Sie einfach die Länge (Anzahl) der Zeichen für das Intervall hinzu, und der neue Iterator zeigt auf das Ende des Bereichs. Der Charakter für diesen letzten Iterator ist nicht im Bereich oder Substring enthalten. Reichweite und Substring hier sind die gleichen Dinge (sie sind dasselbe oben). Für die Funktion Substr () String -Elemente ist NPOS die Länge des Intervalls.

Der Iterator, der dem Index Null entspricht, lautet:

str.Start()

NPOs können diesem Iterator hinzugefügt werden, um auf das letzte Element des Bereichs zu verweisen. Das letzte Element oder das letzte Zeichen des Bereichs ist nicht Teil des Substrings.

Der Iterator, der dem Punkt kurz nach dem letzten Zeichen der Zeichenfolge entspricht, lautet:

str.Ende()

NPOs können davon abgezogen werden, um auf einen gewünschten ersten Zeichen der Zeichenfolge hinzuweisen.

begin () und end () sind Mitgliedsfunktionen der String -Klasse.

Substring löschen

Ein Substring wird in einem String -Objekt mit den Argumenten, POS und NPOs der Substr () -Funktion identifiziert. Erinnern Sie sich daran, dass NPOS ein Intervall ist. Die String -Klasse hat auch eine Mitgliedsfunktion namens erase (). ERASE () ist in überladenen Formen. Eine der überlasteten ERASE () -Mitglied -Funktionen identifiziert das Substring mit POS und NPOS. Die Syntax ist:

Basic_string & Erase (size_type pos = 0, size_type n = npos)

Diese Löschfunktion löscht das Substring und gibt die ursprüngliche Zeichenfolge mit dem gelöschten Substring zurück.

Um ein Substring zu löschen, ist die Substr () -Funktion nicht erforderlich. Es sind seine Argumente, die benötigt werden. Verwenden Sie zum Löschen eines Substrings die Funktion der Löschelemente des String -Objekts. Um eine Kopie des Substring zu haben, verwenden Sie einfach die Funktion substr (), bevor Sie löschen. Das folgende Programm zeigt eine gute Möglichkeit, ein Substring zu löschen:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
String str = "One_two_three_four_five";
String substrin = str.Substr (8, 5);
String ret = str.Erase (8, 5);
Cout <Cout <Cout <Rückkehr 0;

Die Ausgabe ist:

drei
ONE_TWO__FOUR_FIVE
ONE_TWO__FOUR_FIVE

Eine Syntax zum Löschen eines Substrings mit Iteratorargumenten ist:

Iterator -Löschen (const_iterator zuerst, const_iterator zuletzt)

Damit wird der Beginn des Substrings zunächst vom Iterator identifiziert, der dem Index entspricht, POS. Um das Ende des Substring zu erhalten, wird der Iterator durch den letzten identifiziert, der durch TELEITEN ERSTE + NPOS erhalten wird. Die Codierung zum Löschen eines Substrings mit dieser überlasteten Funktionsvariante von erase () wird als Übung für den Leser überlassen.

Ersetzen eines Substrings

Was ein Substring wirklich identifiziert, sind die Argumente: POS und NPOs. Verwenden Sie zur Rückgabe eines Substring die Funktion der String -Klasse -Mitgliedsfunktion Substr (). Verwenden Sie zum Löschen eines Substrings die Funktion der String -Klasse -Mitgliedsfunktion, erase (). Und um ein Substring durch eine beliebige Länge zu ersetzen, verwenden Sie die Funktion der String -Klasse -Mitgliedsfunktion, ersetzen Sie (). Die Ersatzfunktion hat viele überlastete Varianten. Derjenige, der den Index verwendet, ist:

Basic_String & Ersatz (size_type pos1, size_type n1, const t & t)

Wobei POS1 POS ist, ist N1 NPOS und T ist ein unabhängiger Array-of-Carray für den Austausch. Es gibt die ursprüngliche Zeichenfolge zurück, einschließlich des Ersatzes.

Hinweis: In C ++ sollte ein Substring nicht gelöscht (gelöscht) werden, bevor es ersetzt wird.
Das folgende Programm zeigt eine gute Möglichkeit, ein Substring zu ersetzen:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
String str = "One_two_three_four_five";
char chs [] = "ccc";
String substrin = str.Substr (8, 5);
String ret = str.ersetzen (8, 5, CHS);
Cout <Cout <Cout <Rückkehr 0;

Die Ausgabe ist:

drei
ONE_TWO_CCC_FOUR_FIVE
ONE_TWO_CCC_FOUR_FIVE

Der Ersatz für den obigen Code war weniger als 5 Zeichen lang. Das folgende Programm zeigt den Fall, in dem der Ersatz größer als 5 Zeichen ist:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
String str = "One_two_three_four_five";
char chs [] = "cccccccc";
String substrin = str.Substr (8, 5);
String ret = str.ersetzen (8, 5, CHS);
Cout <Cout <Cout <Rückkehr 0;
drei
ONE_TWO_CCCCCCCC_FOUR_FIVE
ONE_TWO_CCCCCCCC_FOUR_FIVE

Eine Syntax, um ein Substring durch Iteratorargumente zu ersetzen, lautet:

Basic_String & Ersatz (const_iterator i1, const_iterator i2, const t & t)

Mit dieser Syntax wird der Beginn des Substrings vom Iterator i1 identifiziert, der dem Index entspricht, POS. Um das Ende des Substring zu erhalten, wird der Iterator durch I2 identifiziert, der durch TEILIGE I1 + NPOS erhalten wird. t hat die gleiche Bedeutung wie oben. Das folgende Programm zeigt, wie diese Syntax verwendet wird:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()
String str = "One_two_three_four_five";
String :: const_iterator itb = str.Start();
String :: const_iterator itpos = itb + 8;
String :: const_iterator itnpos = itpos + 5;
char chs [] = "ccccc";
String substrin = str.Substr (8, 5);
String ret = str.ersetzen (itpos, itnpos, chs);
Cout <Cout <Cout <Rückkehr 0;

Die Ausgabe ist:

drei
ONE_TWO_CCCC_FOUR_FIVE
ONE_TWO_CCCC_FOUR_FIVE

Beachten Sie, dass die verwendeten Iteratoren konstante Iteratoren sind. Der Iterator, der dem Index POS entspricht, wird mit ITB + 8 erhalten. Der Iterator, der dem höheren Index entspricht, wird mit ITPOS + 5 erhalten.

Abschluss

Ein Unterstring oder Substring oder Reichweite ist nur ein Teil einer Abfolge von Zeichen innerhalb eines Saitenliterales. Verwenden Sie zur Rückgabe eines Substring die Funktion der String -Klasse -Mitgliedsfunktion Substr (). Verwenden Sie zum Löschen eines Substrings die Funktion der String -Klasse -Mitgliedsfunktion, erase (). Verwenden Sie, um eine Substring zu ersetzen, die Funktion der String -Klasse -Elemente ersetzen ().). Für all diese Funktionen sind das Indexargument, POS und das Indexintervall NPOs der Schlüssel zur Identifizierung des Substring des Hauptzeichenfolge.