Analysieren Sie eine durch Kommas getrennte Zeichenkettensequenz in C++
-
Verwenden Sie die Funktionen
std::string::find
undstd::string::erase
, um die durch Kommas getrennte Zeichenkettensequenz in C++ zu analysieren -
Verwenden Sie die Funktion
std::getline
, um eine durch Kommas getrennte Zeichenkettensequenz zu analysieren
In diesem Artikel werden verschiedene Methoden zum Parsen einer durch Kommas getrennten Zeichenkettenfolge in C++ beschrieben.
Verwenden Sie die Funktionen std::string::find
und std::string::erase
, um die durch Kommas getrennte Zeichenkettensequenz in C++ zu analysieren
Die Methode std::find
ist eine integrierte Funktion der Klasse std::string
und kann zum Ermitteln der Position des angegebenen Teilstrings verwendet werden. In diesem Fall ist ein einziges Argument erforderlich, das den zu findenden Teilstring angibt. Jede mehrstellige Zeichenkettenvariable kann initialisiert werden, um als Argument übergeben zu werden. Obwohl wir im folgenden Beispiel ein einzelnes Komma deklarieren, das string
enthält. Da die Methode find
die Position des Teilstrings und string::npos
zurückgibt, wenn der Teilstring nicht gefunden wird, können wir den Vergleichsausdruck in eine while
-Schleife einfügen, die ausgeführt wird, bis der Ausdruck true ergibt.
Wir speichern auch die analysierte Zeichenkette bei jeder Iteration im Container vector
. Anschließend wird die Methode erase
aufgerufen, um die Zeichen vor und einschließlich des ersten gefundenen Komma-Trennzeichens zu löschen und das gleiche Objekt string
in der nächsten Iteration weiter zu verarbeiten. Schließlich geben wir die gespeicherten Elemente im Vektor
in den Stream cout
aus.
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::stringstream;
using std::vector;
int main() {
string text = "1,2,3,4,5,6,7,8,9,10";
string delimiter = ",";
vector<string> words{};
size_t pos = 0;
while ((pos = text.find(delimiter)) != string::npos) {
words.push_back(text.substr(0, pos));
text.erase(0, pos + delimiter.length());
}
for (const auto &str : words) {
cout << str << endl;
}
return EXIT_SUCCESS;
}
Ausgabe:
1
2
3
4
5
6
7
8
9
Verwenden Sie die Funktion std::getline
, um eine durch Kommas getrennte Zeichenkettensequenz zu analysieren
Bei der vorherigen Lösung wird die letzte Zahl in der durch Kommas getrennten Sequenz nicht extrahiert. Daher ist es möglicherweise besser, die folgende Methode mit der Funktion std::getline
zu verwenden, als im vorherigen Codebeispiel eine bedingte Prüfung hinzuzufügen. getline
liest Zeichen aus dem angegebenen Eingabestream und speichert sie in einem string
-Objekt. Die Funktion verwendet auch ein optionales drittes Argument, um das Trennzeichen anzugeben, nach dem die EingabeZeichenkette aufgeteilt werden soll. Wir speichern die extrahierten Zeichenketten auch bei jeder Iteration im Container std::vector
zur späteren Verwendung.
#include <algorithm>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::stringstream;
using std::vector;
int main() {
string text = "1,2,3,4,5,6,7,8,9,10";
char delimiter = ',';
vector<string> words{};
stringstream sstream(text);
string word;
while (std::getline(sstream, word, delimiter)) {
words.push_back(word);
}
for (const auto &str : words) {
cout << str << endl;
}
return EXIT_SUCCESS;
}
Ausgabe:
1
2
3
4
5
6
7
8
9
10
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookVerwandter Artikel - C++ String
- Finden Sie das erste sich wiederholende Zeichen in einer Zeichenfolge in C++
- Finden Sie die längste gemeinsame Teilzeichenfolge in C++
- Großschreiben des ersten Buchstabens einer Zeichenfolge in C++
- Vergleich von String und Character in C++
- Entfernen Sie das letzte Zeichen aus einer Zeichenkette in C++
- Abrufen des letzten Zeichens einer Zeichenkette in C++