Fehler beim Dateienpfad erstellen



  • Ich habe das Problem das ich 1000 Files einlesen.
    Die sind folgendermassen verteilt:
    10 Ordner mit jeweils 100 dateien

    der Dateienphad ist wie folgt: corel/0/0.ppm

    Beim mir wird die erste Datei richtig eingelesen jedoch, fängt er mir an folgendes zu machen "corel/00/01.ppm", obwohl es eigentlich "corel/0/1.ppm" sein sollte.

    Hier ist der Quelltext:

    stringstream directory, datafile;
    string filepath;
    int numberDirectory=0;
    numberFile=0;
    
    for(numberDirectory; numberDirectory<10; numberDirectory++)
    {
    	for(numberFile; numberFile<100 && totalFileNumber<1000; numberFile++)
    	{
    						//readfile
    	directory << numberDirectory;
    	datafile << numberFile;
    	filepath = "corel/" + directory.str()+ "/" + datafile.str() + ".ppm";
    
    	cout << filepath << endl;
    //..
            }
    }
    


  • Evtl die strstreams nicht leer gemacht?

    #include <iostream>
    #include <sstream>
    
    int main()
    {
    	using namespace std;
    	ostringstream streamFilepath;
    	for(int numberDirectory=0; numberDirectory<10; numberDirectory++)
    	{
    		for(int numberFile=0; numberFile<10; numberFile++)
    		{
    		    streamFilepath.str(string());//Oder den streamFilePath erst hier definieren
    			streamFilepath<<"corel/"<<numberDirectory<<'/'<<numberFile;
    			//readfile
    
    			cout << streamFilepath.str() << endl;
    		}
    	}
    }
    

  • Mod

    Wenn du in den Stream immer mehr reinschreibst, dann wird er immer länger. Erstell einen neuen Stream in der Schleife. Und damit du nicht Unmengen Streams dauernd neu erzeugen und vernichten musst, kürz noch ab:

    for(numberDirectory = 0; numberDirectory<10; numberDirectory++)
    {
        for(numberFile = 0; numberFile<100 && totalFileNumber<1000; numberFile++)
        {
           stringstream full_name;
           full_name << "corel/" << numberDirectory << '/' << numberFile << ".ppm";
           cout << full_name.str() << endl;
        }
    }
    

    Ich vermute auch mal, dass deine innere for-Schleife nicht das tat, was du wolltest und habe dies korrigiert.


Anmelden zum Antworten