[VS C++]Problem beim Einlesen von Dateien

Zorck

Erfahrenes Mitglied
Hallo,
ich habe folgenden Code zum Einlesen von Dateien (nur ein Beispiel):
Code:
int main()
{
	ifstream dat_ein;
	string pfad;
	char zeichen;

	pfad = "C:/Test.txt"

	dat_ein.open(pfad.c_str(), ios::in);
	if (!dat_ein)
	{
		cout << "Datei konnte nicht geoeffnet werden!\n\n";
		return 1;
	}


	while(!dat_ein.eof())
	{
		dat_ein.get(zeichen);	
		cout << zeichen;
	}
	
	dat_ein.close();
	return 0;
}
Das komische ist, dass die While-Schleife genau einmal mehr durchläuft, als Zeichen in der Datei sind.
Wenn in der Datei Test.txt also nur eine 1 steht, wird später 11 ausgegeben. Beim zweiten Durchlauf der Schleife wird auch kein Wert an 'zeichen' zurückgegeben, daher wird dasselbe wie zuvor ausgegeben.
Was läuft da falsch? Oder was hab ich da falsch verstanden?
Vielleicht kann mir das ja mal wer sagen!:rolleyes:
 
eof() gibt erst dann true zurück, nachdem nicht mehr gelesen werden konnte, zum Beispiel durch get() .

Vorschlag:
Code:
  while(!dat_ein.eof())
  {
    dat_ein.get(zeichen);	
    if  (!dat_ein.eof())
      cout << zeichen;
  }
 

Neue Beiträge

Zurück