Merkwürdiges Problem mit getline



  • Hiho!

    Ich wollte mit Hilfe der Funktion getline 2 Textstellen aus einer Datei auslesen und in einen Speicher kopieren. Hier der Code:

    #include <fstream>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	ifstream logfile("text.txt");
    
    	char buffer[99]; //gehen auch kleiner ich weiß :clown:
    	char buffer2[99];
    
    	//Spring zum 10. Zeichen, lese 21 Zeichen aus und schreibe sie in Buffer
    	logfile.seekg(10);
    	logfile.getline(buffer, 21);
    
    	logfile.close();
    
    	ifstream logfile1("text.txt");
    
    	//Spring zum 38. Zeichen, lese 19 Zeichen aus und schreibe sie in Buffer
    	logfile1.seekg(38);
    	logfile1.getline(buffer2, 19);
    
    	logfile1.close();
    	cout<<buffer<<endl;
    	cout<<buffer2<<endl;
    
    	return(0);
    }
    

    So funktioniert auch alles, allerdings muss ich das selbe File einmal schließen und wieder öffnen 😕 Mache ich das hingegen so:

    #include <fstream>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	ifstream logfile("text.txt");
    
    	char buffer[99]; //gehen auch kleiner ich weiß :clown:
    	char buffer2[99];
    
    	//Spring zum 10. Zeichen, lese 21 Zeichen aus und schreibe sie in Buffer
    	logfile.seekg(10);
    	logfile.getline(buffer, 21);
    
    //	logfile.close();
    
    //	ifstream logfile1("text.txt");
    
    	//Spring zum 38. Zeichen, lese 19 Zeichen aus und schreibe sie in Buffer
    	logfile.seekg(38);
    	logfile.getline(buffer2, 19);
    
    	logfile.close();
    	cout<<buffer<<endl;
    	cout<<buffer2<<endl;
    
    	return(0);
    }
    

    ist nur die erste getlinefunktion erfolgreich, die zweite liest gar nix aus 😮, kommentiere ich die erste getlinefunktion aus funktioniert die zweite wieder 😕.
    Woran liegt das?
    Hier der Inhalt der Datei

    "PID: 0172 Number of events: 45"
    "Start Day, Time:", "WE", 23,07,51.8

    Damit ihr auch probieren könnt.


Anmelden zum Antworten