Aufteilen eines Strings in einen Vektor von Strings in C
Das Aufteilen eines Strings in seine Bestandteile kann eine häufige Aufgabe in der Programmierung sein. Wenn Sie in C mit Strings arbeiten, müssen Sie möglicherweise einen String in einen String-Vektor aufteilen. Es gibt mehrere Möglichkeiten, diese Aufgabe zu erfüllen, aber der effizienteste und bequemste Ansatz hängt von den spezifischen Anforderungen Ihrer Anwendung ab.
Boost-Algorithmus-Bibliothek
Wenn Sie verwenden Mit der Boost-Bibliothek können Sie deren leistungsstarke String-Algorithmen-Bibliothek nutzen. Boost bietet eine robuste Implementierung der „Split“-Funktion, mit der Sie eine Zeichenfolge einfach in einen Vektor von Zeichenfolgen aufteilen können. Der folgende Codeausschnitt zeigt, wie Boost zum Teilen einer Zeichenfolge verwendet wird:
#include <boost/algorithm/string/classification.hpp> // Include boost::for is_any_of #include <boost/algorithm/string/split.hpp> // Include for boost::split // ... std::vector<std::string> words; std::string s; boost::split(words, s, boost::is_any_of(", "), boost::token_compress_on);
In diesem Beispiel enthält der Vektor „Wörter“ alle Teilzeichenfolgen, die durch die angegebenen Trennzeichen (Komma und Leerzeichen) getrennt sind. Darüber hinaus stellt „token_compress_on“ sicher, dass aufeinanderfolgende Trennzeichen als ein einzelnes Trennzeichen behandelt werden.
Standardbibliotheksfunktionen
Wenn Boost keine Option ist, können Sie C verwenden Standardbibliotheksfunktionen zur String-Manipulation. Ein Ansatz besteht darin, die Funktion „find“ zu verwenden, um jedes Trennzeichen zu finden, und dann „substr“ zu verwenden, um die Teilzeichenfolge zu extrahieren:
std::vector<std::string> words; std::string s; for (size_t pos = 0; ; pos += len) { size_t len = s.find(",", pos); if (len == std::string::npos) { len = s.length() - pos; } words.push_back(s.substr(pos, len)); if (len == 0) break; }
Dieses Codefragment teilt die Zeichenfolge „s“ durch Kommas auf und fügt jede Teilzeichenfolge hinzu zum Vektor „Wörter“.
Reguläre Ausdrücke
Eine andere Möglichkeit ist die Verwendung regulärer Ausdrücke Ausdrücke zum Teilen der Zeichenfolge. Reguläre Ausdrücke können eine leistungsstarke und flexible Möglichkeit bieten, komplexe String-Operationen durchzuführen:
std::vector<std::string> words; std::string s; std::regex re(","); std::sregex_token_iterator it(s.begin(), s.end(), re, -1); std::sregex_token_iterator end; while (it != end) { words.push_back(*it); ++it; }
Dieses Code-Snippet verwendet „std::regex“ und „std::sregex_token_iterator“, um die String-„s“ aufzuteilen Kommas, wobei wiederum jede Teilzeichenfolge zu den „Wörtern“ hinzugefügt wird. Vektor.
Fazit
Der beste Ansatz zum Aufteilen einer Zeichenfolge in einen Vektor von Zeichenfolgen hängt von Ihren spezifischen Anforderungen ab. Wenn Sie eine leistungsstarke und vielseitige Lösung benötigen, ist die Boost-String-Algorithmen-Bibliothek sehr zu empfehlen. Erwägen Sie für Standard-C-Implementierungen die Verwendung der Funktionen „find“ und „substr“ oder regulärer Ausdrücke.
Das obige ist der detaillierte Inhalt vonWie kann ich in C einen String in einen Vektor von Strings aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!