Heim > Backend-Entwicklung > C++ > Wie kann ich in C einen String in einen Vektor von Strings aufteilen?

Wie kann ich in C einen String in einen Vektor von Strings aufteilen?

DDD
Freigeben: 2024-12-30 19:33:10
Original
302 Leute haben es durchsucht

How Can I Split a String into a Vector of Strings in C  ?

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);
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage