Heim >Backend-Entwicklung >C++ >Wie können Sie Zeichenfolgen mit mehreren Trennzeichen in C aufteilen?
Zeichenfolgen mit mehreren Trennzeichen aufteilen
Bei der Aufgabe, Text in sinnvolle Einheiten zu unterteilen, stehen Entwickler häufig vor der Notwendigkeit, eine Zeichenfolge in Wörter zu unterteilen. Während herkömmliche Methoden für einzelne Trennzeichen ausreichen, welche Optionen stehen zur Verfügung, wenn mehrere Trennzeichen beteiligt sind?
Um dieser Herausforderung zu begegnen, kann eine Technik implementiert werden, die mehrere Trennzeichen für die Zeichenfolgenaufteilung verwendet. Schauen wir uns die Lösung genauer an.
In C lautet die Syntax zum Parsen einer Zeichenfolge mit einem einzelnen Trennzeichen mithilfe eines Zeichenfolgenstroms wie folgt:
std::stringstream stringStream(inputString); std::string word; while(std::getline(stringStream, word, delimiter)) { wordVector.push_back(word); }
Um mehrere Trennzeichen zu berücksichtigen, lesen wir zuerst die gesamte Zeile in einen Puffer. Anschließend iterieren wir über die Linie und identifizieren Positionen, an denen eines der angegebenen Trennzeichen erscheint. Indem wir die vorherige Position von der aktuellen Position des Trennzeichens subtrahieren, erhalten wir die Teilzeichenfolge, die das Wort darstellt, und fügen sie dem Wortvektor hinzu.
Wenn wir beispielsweise Leerzeichen, Apostroph und Semikolon als Trennzeichen wählen, wird das Der folgende Code erledigt die Aufgabe:
std::stringstream stringStream(inputString); std::string line; while(std::getline(stringStream, line)) { std::size_t prev = 0, pos; while ((pos = line.find_first_of(" ';", prev)) != std::string::npos) { if (pos > prev) wordVector.push_back(line.substr(prev, pos-prev)); prev = pos+1; } if (prev < line.length()) wordVector.push_back(line.substr(prev, std::string::npos)); }
Das obige ist der detaillierte Inhalt vonWie können Sie Zeichenfolgen mit mehreren Trennzeichen in C aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!