String splitten
-
Hi,
ich möchte gerne einen String splitten und zwar mit Leerzeichen als Trennzeichen. Dabei können beliebig viele Leerzeichen zwischen zwei zu trennenden Elementen stehen.
Kann mir jemand einen Tipp geben, wie ich so etwas angehen könnte?
Danke.
-
jo, find_first_of und find_last_of und substr!
-
vielleicht auch strtok, weiß net genau!
-
Oder auch in nen stringstream rein und dann mit >> einzelne strings rauslassen.
Oder boost::tokenizer anschaun.
-
Moin, wollt grade mal selber testen ob ich das hinbekomme, keine Ahnung obs "gut" gecodet ist.
#include <iostream> #include <string> #include <vector> #include <iterator> using namespace std; int main() { // Test-String string test(" Hallo, \n ich\nbin ein toller \nString!\n"); // Trennzeichen const string trennung(" \n"); // Vektor für die zerteilten Strings vector<string> teile; // Stringpositionen (string::sive_type = unsigned int) string::size_type begIdx, endIdx; // Den Start suchen (falls am Anfang Trennzeichen stehen) begIdx = test.find_first_not_of(trennung); // Solange gültiger Stringindex (string::npos = nichts gefunden) while(begIdx != string::npos) { // Ende des aktuellen Worts endIdx = test.find_first_of(trennung, begIdx); if(endIdx == string::npos) { endIdx = test.length(); } // Wort in Vektor schreiben teile.push_back(test.substr(begIdx, endIdx-begIdx)); // Nächstes Wort suchen begIdx = test.find_first_not_of(trennung, endIdx); } return 0; }