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.exeIch 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.exeHabe 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
-
Guck dir mal getline an. Als Trennzeichen verwendest du '\' und kannst somit die Daten einfach nacheinander auslesen.
Getline: http://www.cplusplus.com/reference/string/getline.html
-
THX vorerst

-
Hallo, vielleicht kannst du mir nochmal helfen?
Ich bekomme das irgendwie nicht hin:void eingabe(char* Text) { string platte; string pfad; char doppelpunkt = ':'; char verzeichnis = '\\'; cout << "Geben sie ein Verzeichnis an: "; getline (cin,platte,doppelpunkt); getline (cin,pfad,verzeichnis); cout << "Platte: " << platte << doppelpunkt << endl; cout << "Verzeichnis: " << verzeichnis << pfad << endl; }Wie bekomme ich das hin, dass er alle verzeichnis aulfistet?
Thx im voraus, asterix
-
Ich hab's jetzt nicht ausprobiert, aber es müsste gehen, indem du so lange verzeichnisnamen einliest, bis dir getline nichts mehr zurückliefert. Der letzte gelieferte Wert ist dann der Dateiname, alles davor Verzeichnisnamen.
-
Hi, ich bekomme das einfach nicht hin. Ich verzweifel gerade.
Hast Du evtl. noch einen Hinweis für mich.
Ich weiss nicht, wie ich alle Pfadangaben nacheinander einlesen soll.Thx asterix
-
std::string path = "c:\\verzeichnis1\\verzeichnis2\\tuwas.exe"; std::vector<std::string> elements; std::stringstream s; s << path; std::string temp = ""; std::getline(s,temp,':'); elements.push_back(temp); s.ignore(1); while (std::getline (s,temp,'\\') ) elements.push_back(temp);Musst einfach schauen, dass der Pfad zwei Backslashs hat.