Problem beim Auslesen aus Datei mit Zahlen und Strings



  • Hallo,

    ich habe ein kleines Problem beim Auslesen einer Datei.
    Und zwar genau dann, wenn ein String in der Datei auftaucht.

    test.txt sieht folgendermaßen aus:
    ---
    datensatz: 1 4711 1.23 1010
    datensatz: 2 0.334 34.12 344.3
    ---

    Mein Code ist folgender:

    void main() {
    	ifstream file;
    
    	file.open( "test.txt" );
    
    	if ( !file )
    		return;
    
    	float data;
    	while( !file.eof() ) {
    		file >> data; // Endlosschleife, sobald test.txt einen String enthält.
    	}
    
    	file.close();
    }
    

    Da die test.txt den String "datensatz:" enthält, funktioniert das Programm leider nicht.

    Denn jedesmal wenn das Programm beim Ausführen des Befehles

    file >> data;
    

    auf einen String trifft, springt der Positionszeiger nicht auf die nächsten Daten, sondern bleibt (vermutlich) auf der Position des Strings und führt somit zu einer Endlosschleife.

    Mir ist schon klar, dass das Programm einen String nicht so einfach in eine Float-Variable konvertieren kann, dennoch soll das Programm weiter mit dem Einlesen der Daten fortfahren...



  • getline(file,data)
    

    packe alles in einen stringstream und zerlege ihn in strings und ints



  • int main und nicht void!! Gib auf jeden Fall was zurück, zb Fehlercode/Status 0 wenn korrekt, im Falle eines Fehlers was anderes
    ifstream file( "test.txt" ); //.open() und .close() nicht explizit nötig

    wenn du schon weißt wie die Datei aufgebaut ist, dann gestalte doch auch das Einlesn so, dh wähle die Variablen so, daß es funktioniert
    wo ist das Problem? lese strings doch einfach in einen Puffer



  • Wie wär's damit?

    while(file >> text >> datum1 >> datum2 >> datum3 >> datum4)
    {
      // zusammenbauen
    }
    

    MfG Jester



  • das wäre am einfachsten, wenn die datei wirklich NUR SO aufgebaut ist


Anmelden zum Antworten