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;
    }
    

Anmelden zum Antworten