Probleme mit fStream



  • Hey zusammen,

    ich komme mit einem Problem zu euch, was sich irgendwie schwer ergooglen ließ.
    Ich versuche, mit fStream mit getline mehrere Zeilen aus einer Datei zu lesen, doch das Programm betritt nicht einmal mehr die Schleife. Doch laut is_good scheint die Datei erfolgreich geladen zu sein...
    Könntet ihr mir sagen, woran das liegen könnte?

    std::fstream Level;
    	char acZeile[18];
    	//...
    	switch(m_wLevel)
    	{
    	case 1:
    		// Level einlesen
    		Level.open("...\\Level1.txt");
    		if(!Level.is_open())//...
    		while(Level.getline(acZeile, 18))
    		{ 
    			//...
    

    Ich habe versucht, es auf das wesentliche zu beschränken und hoffe ihr könnt mir helfen.
    Und entschuldigt, falls es iein stupider Fehler sein sollte 😃

    Kinetize



  • Es wundert mich, dass die Datei geöffnet werden kann, da du 3 Punkte im Pfad angegeben hast, obwohl das nur 2 sein sollten.
    Die Zeile wird ausserdem nicht betreten, wenn die erste Zeile 18 Zeichen lang ist.

    Ich empfehle dir, alles mit std::string zu machen, dann sollte das einfacher gehen.

    switch(m_wLevel)
    	{
    	case 1: {
              std::fstream Level("../Level1.txt"); // kein Grund, das schon vorher zu definieren.
              std::string zeile;
              while(std::getline(Level, zeile)) // zeile ist automatisch gross genug
    		  { 
    			//...
    


  • Du hast dort stehen:

    if(!Level.is_open())//...
    

    Was im wesentlichen bedeutet, "wenn die Datei nicht erfolgreich geöffnet werden konnte, dann kümmer dich um die while-Schleife".

    Was zu folgendem Verhalten führt:
    Die Datei wurde korrekt geöffnet => Schleife wird nicht abgearbeitet
    Die Datei wurde nicht korrekt geöffnet => Schleife wird ausgeführt, aber bricht gleich wieder ab, weil die Datei nicht gültig ist.



  • @kott
    Danke, probiere ich!
    Bei dem Pfad stehen keine Punkte, habe es nur der Übersicht halber rausgekürzt 😉

    @gf
    Nach dem If kommt eine Anweisung an den Errorhandler, die ich rausgekürzt habe.
    Die While Schleife steht hinterm else...



  • Hey kott,

    bei deiner Lösung sagt er mir, das getline kein Element von std ist...
    Sry falls ich gerade total aufm Schlauch stehe...


  • Mod

    #include <string> vergessen?



  • Aah danke, ich wusste das ich ieinen stupiden Fehler drin hatte 😃



  • Es funktioniert nun alles, danke an alle fürs Antworten 🙂


Anmelden zum Antworten