So teilen Sie Strings mit dem Trennzeichen in C ++

So teilen Sie Strings mit dem Trennzeichen in C ++
Das Aufteilen einer Zeichenfolge mit einem Trennzeichen ist ein häufiger Betrieb bei der Programmierung, insbesondere bei der Arbeit mit Textdaten. A Abgrenzer ist ein Zeichen oder eine Abfolge von Zeichen, die verwendet werden, um einen Abschnitt einer Zeichenfolge von einem anderen zu trennen. Wenn ein Text mit a in kleinere Substrings unterteilt ist Abgrenzer, Der Trennzeichen oder Trennzeichen ist vorbestimmt. Viele Programmieraufgaben, wie z. Es gibt einige String-Splitting Methoden in C ++ erhältlich, jeweils Vor- und Nachteile mit.

In diesem Artikel werden wir einige der gemeinsamen Wege untersuchen Teilen Sie eine Zeichenfolge mit einem Trennzeichen auf in c++.

Split -Saiten mit dem Trennzeichen in C++

In C ++ gibt es mehrere Ansätze, um eine Zeichenfolge mit einem Trennzeichen zu brechen, einschließlich:

  • Verwenden Sie die Funktionen find () und substr ()
  • Verwenden der Funktion strtok ()
  • Verwenden der Stringsstream -Klasse

1: Verwenden Sie die Funktionen find () und substr ()

Eine Zeichenfolge kann unter Verwendung der C ++ - Funktionen geteilt werden finden() Und substr (). Die erste Instanz eines Substrings befindet sich mit dem finden() Methode. Wenn es keine Ereignisse mehr gibt, wird das verbleibende Stück der Saite nach der Einfügung in den Vektor zurückgegeben. Der Substring, der zu Beginn des Textes beginnt und am Trennzeichen endet, kann dann mit dem extrahiert werden substr () Funktion. Wir können dies tun, bis alle Substrings erhalten wurden.

Hier ist ein C ++ - Beispiel dafür Teilen Sie eine Zeichenfolge mit einem Trennzeichen auf:

#enthalten
#enthalten
int main ()
std :: string str = "Apple, Banane, Kirsche";
std :: string delimiter = ",";
size_t pos = 0;
Std :: String Token;
while ((pos = str.Finden Sie (Trennzeichen)) != std :: string :: npos)
Token = str.substr (0, pos);
std :: Cout << token << std::endl;
str.löschen (0, POS + Begrenzer.Länge());

std :: Cout << str << std::endl;
Rückkehr 0;

Im obigen Beispiel eine Zeichenfolge mit dem Namen "Str" und ein Trennzeichen namens namens "Trennzeichen" sind festgelegt. Die Substrings von "Str" werden dann mit einer Weile -Schleife extrahiert. Der Ort des Trennzeichens wird von der zurückgegeben finden() Methode, oder std :: string :: npos Wenn es nicht gefunden werden kann. Das Substring vom Beginn von "Str" bis zum Trennzeichen wird mit Verwendung extrahiert "Substr ()" an dieser Stelle, und es wird dann zur Konsole gedruckt. Das extrahierte Substring und der Trennzeichen werden dann herausgenommen "Str" Verwendung der "löschen()" Funktion. Sobald es keine Abgrenzer mehr gibt "Str", Wir wiederholen diesen Vorgang. Danach geben wir das letzte Substring aus "Kirsche" zur Konsole.

Ausgang

2: Verwenden der Funktion strtok ()

Der Strtok () Die Funktion ist eine weitere Funktion in C ++, die die Zeichenfolgen mit einem Trennzeichen in jedem C ++ - Programm effektiv teilen kann. Es nimmt zwei Eingänge heraus; Die String, die geteilt werden soll und der Trennzeichencharakter. Hier ist eine Implementierung von Strtok () Funktion in C ++:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

Char Str [100];
Cout << " Enter a string: " <CIN.Getline (str, 100);
char *ptr;
ptr = strtok (str, ",");
Cout << " \n Splitting the string: " << endl;
while (ptr != Null)

Cout << ptr << endl;
ptr = strtok (null, ",");

Rückkehr 0;

Der Strtok () Die Funktion wird im obigen Code verwendet, um eine von Benutzer gelieferte Eingabezeichenfolge in Token unter Verwendung eines Kommas und einem Speicherplatz als Abgrenzer zu unterteilen. Dann veröffentlicht es jedes Token an der Konsole in einer separaten Zeile. Dies wird erreicht, indem die Eingangszeichenfolge in einem Char -Array gespeichert, über die Token mit einem Zeichenzeiger iteriert und dann die Zeichenfolge wiederholt geteilt wird, bis alle Token angezeigt wurden.

Ausgang

3: Verwenden der Stringsstream -Klasse

Verwendung der Klasse ist eine weitere Technik, um eine Zeichenfolge in C zu teilen++. Es ist möglich, formatierte Daten, einschließlich Zeichenfolgen, mit dieser Klasse einzugeben und auszugeben. Eine Schnur, die als Stream gehandhabt wird getline () Methode. Der getline () Die Methode extrahiert das Substring auf den Trennzeichen, wenn wir ihm den Trennzeichen als Parameter zur Verfügung stellen.

Hier ist eine Illustration, wie es geht Teilen Sie eine Zeichenfolge in c++ Verwendung der STRINGSTREAM () Funktion.

#enthalten
#enthalten
#enthalten
#enthalten
int main ()
std :: string input_string = "Apple, Banane, Kirsche";
STD :: Vektor Token;
std :: stringstream ss (input_string);
Std :: String Token;
while (std :: getline (ss, token ','))
Token.push_back (token);

für (automatisch: tokens)
std :: Cout << t << std::endl;

Rückkehr 0;

Im obigen Code wird ein Trennzeichen verwendet, um eine Eingangszeichenfolge in Token zu unterteilen . Bevor Sie jedes Token aus dem extrahieren Mit dem Trennzeichen initialisiert das Programm eine Objekt mit der Eingabezeichenfolge. Ein Saitenvektor wird dann von jedem Token erweitert. Das Programm schiebt sich dann durch den Vektor und druckt jeden Token am Ende an die Konsole.

Ausgang

Abschluss

Die Aufteilung einer Zeichenfolge mit einem Trennzeichen ist ein effektiver Ansatz in C ++, und es gibt mehrere integrierte Funktionen in C ++, die es ermöglichen, Zeichenfolgen zu teilen. Diese Funktionen umfassen find (), substr (), strtok () Und Stringsstream Klasse. Die Entwickler sollten die spezifischen Anforderungen ihrer Anwendung berücksichtigen und die Funktion auswählen, die für sie am besten funktioniert.