moin, moin,
ich versuche gerade ein Programm zu schreiben, welches seine Eingabedaten mit Hilfe einer Datei übermittelt bekommt. Dazu habe ich bereits einen kleinen Teil geschrieben. Leider komme ich mit dem Dateizugriff nicht so recht klar.
In diesem Programmstück lese ich erstmal alles Zeilen in der Datei ein, um zu wissen, wie viele Zeilen da drin stehen um beim eigentlichen Programmablauf dann eine Fortschrittsanzeige realisieren zu können (falls da jemand eine besser Idee hat, als die Datei erst komplett einzulesen, wäre ich dem nicht abgeneigt). Nach dem ich das gemacht habe, muss ich natürlich wieder an den Dateianfang, um jetzt ernsthaft die Daten zu lesen. Das sollte ja prinzipiell mit seekg funktionieren. Leide kann ich aber die Daten kein zweites Mal auslesen. Um Fehler beim zweiten Auslesen auszuschließen, habe ich einfach nach der Zeile mit seekg noch einmal den funktionierenden Code für das Zeilenzählen eingefügt.
Vielleicht könnt ihr mir helfen, was ich hier falsch mache. Vielen Dank schon mal für die Hilfe im Voraus.
ich versuche gerade ein Programm zu schreiben, welches seine Eingabedaten mit Hilfe einer Datei übermittelt bekommt. Dazu habe ich bereits einen kleinen Teil geschrieben. Leider komme ich mit dem Dateizugriff nicht so recht klar.
In diesem Programmstück lese ich erstmal alles Zeilen in der Datei ein, um zu wissen, wie viele Zeilen da drin stehen um beim eigentlichen Programmablauf dann eine Fortschrittsanzeige realisieren zu können (falls da jemand eine besser Idee hat, als die Datei erst komplett einzulesen, wäre ich dem nicht abgeneigt). Nach dem ich das gemacht habe, muss ich natürlich wieder an den Dateianfang, um jetzt ernsthaft die Daten zu lesen. Das sollte ja prinzipiell mit seekg funktionieren. Leide kann ich aber die Daten kein zweites Mal auslesen. Um Fehler beim zweiten Auslesen auszuschließen, habe ich einfach nach der Zeile mit seekg noch einmal den funktionierenden Code für das Zeilenzählen eingefügt.
Vielleicht könnt ihr mir helfen, was ich hier falsch mache. Vielen Dank schon mal für die Hilfe im Voraus.
Code:
#include <iostream> //allgemeiner Header für Ein- und Ausgabe
#include <fstream> //Header für Dateizugriffe
#include <string>
using namespace std;
//HAUPTFUNKTION
int main(int argc, char* argv[])
{
if (argc==1) { //Abbruch des Programms, wenn kein Dateiname angegeben worden ist
cout<<"Es wurde kein Dateiname angegeben\n";
return 0;
}
ifstream alleStrukturen(argv[1]); //Ausgangsdatei öffnen
if (!alleStrukturen) { //Fehlerabfrage
cerr<<"Datei kann nicht geöffnet werden\n";
exit(-1);
}
char buffer[256]; //Puffervariable für eingelesene Zeichen
int AnzahlStrukturen=0; //Anzahl der Strukturen, die sich in der Ausgangsdatei befinden
while (alleStrukturen.getline(buffer,256)) AnzahlStrukturen++; //zählen der Strukturen
cout<<AnzahlStrukturen<<" Strukturen wurden eingelesen\n";
alleStrukturen.seekg(static_cast<streamoff>(0),ios::beg); //Lesepointer nach dem Zählen wieder auf den Anfang der Datei setzen
AnzahlStrukturen=0; //Anzahl der Strukturen, die sich in der Ausgangsdatei befinden
while (alleStrukturen.getline(buffer,256)) AnzahlStrukturen++; //zählen der Strukturen
cout<<AnzahlStrukturen<<" Strukturen wurden beim 2. Mal eingelesen\n";
alleStrukturen.close(); //Schließen der Ausgangsdatei
alleStrukturen.clear();
system("PAUSE");
}