auslesen aus einer Datei

july

Erfahrenes Mitglied
hallo zusammen,

ich hab gerade ein Problem beim Lesen aus einer Datei. Die Datei wird davor erfolgreich erstellt und die Daten dadrin stimmen auch , aber...

C++:
{

ifstream inmap;
inmap.open(filename.c_str(), ios::in | ios::binary);
if(inmap.good())
   {
      while(!inmap.eof())
        {
          inmap >> key;
          inmap >> mel.msgId;
          .....
          }
          inmap.close();
          return 0;
     } else return -1;
}

beim debuggen stell ich fest, dass beim Lesen die while-schleife zu einer Endlosschleife wird :/
Hat jemand eine Idee woran es liegt?

Grüße July
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

warum es bei dir eine endlos-Schleife wird, weiß ich jetzt auch nicht. Normalerweise sollte die Funktion eof() true geben, wenn du am Ende der Datei bist.
Ich lese Daten aus einer Datei immer mit fstream aus.

Code:
fstream fDatei;
char cDaten[1024];

fDatei.open(cDateipfad, ios::in | ios::binary);
if(fDatei.good())
{
    fDatei.read(cDaten, sizeof(cDaten));
}
fDatei.close();

Wenn du es ganz gut machen willst, schaust du zuvor, wie groß die Datei ist und erstellst entsprechend ein char-Array. Ist bei größeren Datein sehr sinnvoll.

Code:
#include <sys/stat.h>  //Für die Dateigröße
#include <sys/types.h>  //Für die Dateigröße

fstream fDatei;
cahr *cDaten;
int iDateigroesse;
struct stat statDateigroesse;

iDateigroesse = stat(cDateipfad, &statDateigroesse);  //Dateigröße der Datei ermitteln

if(iDatei_Dateigroesse == 0)
{
    iDateigroesse = statDateigroesse.st_size;
}
else
{
    //Datei konnte nicht gefunden werden
}

char *cDaten = new char[iDateigroesse];

fDatei.open(cDateipfad, ios::in | ios::binary);
if(fDatei.good())
{
    fDatei.read(cDaten, iDateigroesse);
}
fDatei.close();

//Wenn du die Daten nicht mehr brauchst, das Array wieder löschen
delete[]cDaten;

Versuche es mal so. Da kann sicher nichts in einer schleife hängen bleiben :-)

grüße
 
Zurück