INT erzeugt in for-Schleife in eine TXT-Datei schreiben



  • Hallo zusammen,

    in einer for-Schleife erhalte ich verschiedene Codes (int), die ich nach und nach in eine Text-Datei schreiben möchte. Dabei sollen die Einträge durch ein Leerzeichen voneinander getrennt sein.

    Um folgende Methode geht es:

    void enkodieren() {
    
    	string aktuell = "";
    	string zuvor = "";
    	string kombination;
    	int kodierung = 0;
    	int kodierungSpeicherplatz = 0;
    
    	for (int i = 0; i <= distance(text.begin(), text.end()); i++) {
    		aktuell = text[i];
    		kombination = zuvor + aktuell;
    
    		if (nichtImWoerterbuch(kombination) == true) {
    			zuvor = kombination;
    		}
    
    		else {
    			woerterbuch[w_index] = kombination;
    				for (int j = 0; j < w_index; j++) {
    					if(woerterbuch[j] == zuvor) {
    						code[kodierungSpeicherplatz] = j;
    						//Hier soll j in die Textdatei geschrieben werden
    					}
    				}
    			zuvor = aktuell;
    			w_index++;
    			kodierungSpeicherplatz++;
    
    			} 
    
    	}
    
    }
    

    Ich habe es bisher nur geschafft, dass die Einträge in der Datei jedes Mal überschrieben werden, d.h. lediglich der letzte Code bleibt bei Ende des Programms erhalten.

    Habt Ihr vielleicht einen guten Tipp für mich?

    Vielen Dank vorab.


  • Mod

    Fischi2k schrieb:

    Ich habe es bisher nur geschafft, dass die Einträge in der Datei jedes Mal überschrieben werden, d.h. lediglich der letzte Code bleibt bei Ende des Programms erhalten.

    Zeig mal, wie du das gemacht hast. Das klingt, als machtest du die Datei für jeden Wert wieder neu auf. Falls dem so ist: Tu das nicht 🙂 ! Mach sie nur einmal ganz am Anfang auf*.

    *: Es ist zwar theoretisch möglich, Dateien so zu öffnen, dass man an die Datei anhängt, anstatt sie zu überschreiben (Überschreiben ist der Normalfall), aber das Öffnen und Schließen einer Datei ist eine sehr teure Aktion. Daher möchte man Dateien in der Regel so lange offen halten, wie man sie noch braucht, anstatt sie nach jeder Aktion zu schließen und vor der nächsten wieder zu Öffnen. Das kann leicht einen Faktor 100-1000 in der Geschwindigkeit ausmachen.



  • Oh Mann... 🙂

    Siehst Du, genau diesen Schlag gegen den Hinterkopf habe ich gebraucht.
    Ich habe die Datei natürlich bei jedem Durchlauf der Schleife neu öffnen lassen - dämlich.

    Danke für den Tipp, Problem ist gelöst!


Log in to reply