Heim >Backend-Entwicklung >C++ >Wie kann ich durch Kommas getrennte Zeichenfolgen in C mithilfe von Stringstream effizient trennen?

Wie kann ich durch Kommas getrennte Zeichenfolgen in C mithilfe von Stringstream effizient trennen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-23 07:18:16302Durchsuche

How Can I Efficiently Separate Comma-Delimited Strings in C   Using stringstream?

Durch Kommas getrennte Zeichenfolgen mit Stringstream trennen

In C ist Stringstream ein leistungsstarkes Werkzeug zum Bearbeiten von Zeichenfolgen und zum Extrahieren von Daten. Während durch Leerzeichen getrennte Zeichenfolgen problemlos getrennt werden können, erfordern durch Kommas getrennte Zeichenfolgen einen leicht modifizierten Ansatz.

Ursprünglicher Ansatz:

Der folgende Code demonstriert den ursprünglichen Ansatz mit Stringstream um Zeichenfolgen zu trennen Leerzeichen:

std::string str = "abc def,ghi";
std::stringstream ss(str);

string token;

while (ss >> token)
{
    printf("%s\n", token.c_str());
}

Ausgabe:

abc
def,ghi

Bei diesem Ansatz können die durch Kommas getrennten Token nicht getrennt werden, da >> Der Operator in Stringstream geht von Leerzeichen als Trennzeichen aus.

Modifizierter Ansatz:

Um durch Kommas getrennte Zeichenfolgen zu trennen, können wir die von Stringstream bereitgestellte Funktion getline() verwenden. Mit dieser Funktion können wir eine Zeichenfolge lesen, bis ein bestimmtes Trennzeichen gefunden wird. Hier ist der geänderte Code:

#include <iostream>
#include <sstream>

std::string input = "abc,def,ghi";
std::istringstream ss(input);
std::string token;

while(std::getline(ss, token, ',')) {
    std::cout << token << '\n';
}

Ausgabe:

abc
def
ghi

Erklärung:

Die getline()-Funktion liest die Eingabezeichenfolge ss und extrahiert ein Token bis zum ersten Vorkommen des Zeichens, das wir als Trennzeichen angeben (hier es ist ein Komma). Anschließend ordnet es das extrahierte Token der Tokenzeichenfolge zu und gibt bei Erfolg „true“ zurück. Durch den wiederholten Aufruf von getline() können wir die durch Kommas getrennten Token in der Eingabezeichenfolge durchlaufen.

Dieser Ansatz trennt die durch Kommas getrennten Zeichenfolgen effektiv in einzelne Token und ermöglicht so eine weitere Verarbeitung oder Manipulation innerhalb Ihres Programms.

Das obige ist der detaillierte Inhalt vonWie kann ich durch Kommas getrennte Zeichenfolgen in C mithilfe von Stringstream effizient trennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn