Probleme mit for-Schleife
-
Hihi,
ich lese einen Projektpfad als String ein.
Der sieht dann so aus:
"D:\.....\.....\.....\...\test.txtJetzt brauche ich aber nur den Pfad ohne die Datei test.txt
Dann hab ich mir überlegt ich schreibe ein for schleife, die mir so lange die Position ermittelt bis -1 audgegeben wird.CString tmp; int pos1; int pos; for (pos = 0; pos != -1; pos++) { pos 1 = pos; pos = m_strDateipfad.Find("\\",pos); } tmp = m_strDateipfad.Left(pos1);Wieso funktioniert die Schleife nicht. Wenn pos == -1 ist setzt er pos auf 0 und beginnt von vorne. Kann man bei for-Schleifen nicht auf -1 abfragen?
Oder hat vielleicht jemand eine andere Idee wie ich an meinem String die Dateibezeichnung abschneiden kann?
Liebe Grüße
AndreaP.S.: Irgendwie schon spät geworden, vielleicht verstehe ich auch deshalb die for-Schleife nicht mehr. Ich wünsche Euch allen eine gute Nacht.
-
C++ kennt kein CString und <irgendwas>.Find ggf. auch nicht.
Unabhängig davon:
for (pos = 0; pos != -1; pos++)
pos = m_strDateipfad.Find("\",pos);
Die schleife soll pos immer um 1 hoch zählen bis Pos -1 erreicht hat. Später wird pos jedoch nicht mehr von der forschleife gesetzt sondern vom unbekannten Find.
Nehmen wir nun an, das Find -1 liefert bei was auch immer.
pos ist somit -1 und am Ende der Schleife wird pos++ ausgeführt.
-1 + 1 = 0.
Meinst nicht, das ein while o.Ä. sinnvoller wäre ?
-
Mag sein dass Du die Schleife ausgeruht besser verstehst

1. Du benutzt l nirgendwo
2. Du weist posl nichts zu
3. Wenn Du -1 erreichst macht ++pos daraus 0 und sucht deshalb am Anfang weiterEvtl. ein Tip: Such doch mit rfind von hinten nach dem ersten \

EDIT:
Evtl. sollte ich auch ne Runde schlafen - dass es ein CString ist habe ich spontan mal garnicht bemerkt
-
ich geh schlafen,
dass ist ja heftichst. ich glaube morgen muss jemand die frage aus dem forum löschen.
ich muss weg.....
guten nacht und danke
andrea