Wie kann ich über die Wörter einer Zeichenkette iterieren?
Ich versuche, über die Wörter einer Zeichenkette zu iterieren.
Es kann davon ausgegangen werden, dass die Zeichenfolge aus durch Leerzeichen getrennten Wörtern besteht.
Beachten Sie, dass ich nicht an C-String-Funktionen oder dieser Art von Zeichenmanipulation/Zugriff interessiert bin. Bitte geben Sie in Ihrer Antwort auch der Eleganz den Vorrang vor der Effizienz.
Die beste Lösung, die ich im Moment habe, ist:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
string s = "Somewhere down the road";
istringstream iss(s);
do
{
string subs;
iss >> subs;
cout << "Substring: " << subs << endl;
} while (iss);
}
Gibt es einen eleganteren Weg, dies zu tun?
2885
3
Dies ist meine Lieblingsmethode, um durch eine Zeichenkette zu iterieren. Sie können pro Wort tun, was Sie wollen.
Die STL verfügt noch nicht über eine solche Methode.
Sie können jedoch entweder die [
strtok()
][1] Funktion von C verwenden, indem Sie das [std::string::c_str()
][2] Mitglied benutzen, oder Sie können Ihre eigene schreiben. Hier ist ein Codebeispiel, das ich nach einer schnellen Google-Suche gefunden habe ("STL string split "):Entnommen aus:
Wenn Sie Fragen zum Codebeispiel haben, hinterlassen Sie einen Kommentar und ich werde es erklären.
Und nur weil es kein
typedef
namens Iterator implementiert oder den `Die Verwendung von
std::stringstream
, wie Sie sie haben, funktioniert perfekt und macht genau das, was Sie wollten. Wenn Sie nur nach einer anderen Methode suchen, können Sie [std::find()
][1]/[std::find_first_of()
][2] und [std::string::substr()
][3] verwenden.Hier ist ein Beispiel: