Extract path



  • Hallo,
    ich habe einen Dateipfad als std::string und möchte jetzt nur den Pfad zum Ordner haben. Also habe mir dazu folgende Funktion geschrieben.

    string Dir(string in)
    {	
      string path;
    
    	for(int i = in.size();; i--)
    	{
    		if(in[i] == '\\')
    		{
    			for(int j = 0; j <= i+1; j++)
    			{
    				path[j] = in[j];  
    			}
    			break;
    		}
         }
      return path;
    }
    

    Beim 2. Durchlauf der 2. for-Schleife bekomme ich einen Fehler 😕
    (in[j] ist dann grade ':').

    Expression: string subscript out of range

    Kann mir Jemand sagen was ich falsch gemacht habe?

    chrises :xmas1:



  • Du fängst schon im ersten Durchlauf falsch an. Du musst i auf size()-1 setzen (du fängst ja bei 0 an zu zählen, geht ein String der Größe 10 bis zum Index 9).

    Du könntest es auch einfacher machen:

    string path=in.substr(0,in.find_last_of('\\'));
    


  • ohh ist mir granicht aufgefallen. Danke! 😃



  • Was funktioniert nicht?

    Deine Schleife könnte z.B. so aussehen:

    for(int j = 0; j <= i; j++)
    {
    	path.append(1,in[j]);  
    }
    break;
    

    So würde es zumindest klappen. Aber das wäre wie von hinten durch die Brust... 😉


Anmelden zum Antworten