String-Zerlegung



  • Hallo, ich brauch ein wenig Hilfe bei der Zerlegung von strings.

    Ich will eine Eingabe, die folgendermaßen aussieht zerlegen!
    c:\verzeichnis1\verzeichnis2\tuwas.exe

    Ich möchte folgende Ausgaben haben:
    Festplatte : c:
    Verzeichnis1 : verzeichnis1
    Verzeichnis2 : verzeichnis2

    ------- soll solange laufen bis kein unterverzeichnis mehr vorhanden-------

    Verzeichnis n : verzeichnis n
    Datei : tuwas.exe

    Habe schon mal so angefangen:

    void eingabe(char* Text)
    {
         int i = 0;
         int a = 0;
         cout << "Bitte geben Sie ein Verzeichnis an: " << endl;
         cin >> Text;
         std::string verzeichnis(Text);
         for (i=0;i<=verzeichnis.find(":");i++)
        { 
         Text[i];
         }
    }
    

    Leider weiss ich jetzt nicht mehr weiter.
    Kann mir jemand helfen?
    THX asterix



  • Ich hätte das nach C++ gepostet.



  • Jo stimmt, bin wohl im falschen Forum. Kann der Moderator den Beitrag bitte verschieben? Thx Asterix



  • habs auf die schnelle mal mit vectoren gemacht, kannst aber ganz einfach
    mit strings verwenden

    char *str = "C:\\test\\subdir\\file.exe";
    char *start = str;
    char *end = str;
    
    std::vector<std::vector<char> > buff;
    
    while (end)
    {
    	end = strstr(start, "\\");
    	if (end)
    		buff.push_back(std::vector<char>(start, end));
    	else
    		buff.push_back(std::vector<char>(start, start + strlen(start)));
    
    	buff.back().push_back(0);
    
    	start = end + 1;
    }
    

    inhalt:

    [0] = C:
    [1] = test
    [2] = subdir
    [3] = file.exe


Anmelden zum Antworten