Das habe ich bereits ausprobiert. Das funktioniert nur wenn, die Datei noch nicht EOF ist.
Ich habe mein Problem jetzt gelöst, allerdings auf eine etwas unschöne Art und Weise, da ich es leider nicht hinbekommen habe den Fehlerstatus zurückzusetzen.
void vergleichen(char* dateiname, char* vergleichsdatei)
{
//Variablen deklarieren
fstream datei1, datei2;
streampos position = 0;
string zeile1, zeile2;
bool gefunden = false;
//Dateien zum schreiben öffnen und das Dateiende signalisieren
datei1.open(vergleichsdatei, ios::app);
datei2.open(dateiname, ios::app);
datei1<<"ENDE"<<endl;
datei2<<"ENDE"<<endl;
datei1.close();
datei2.close();
//Dateien zum Lesen öffnen
datei1.open(vergleichsdatei, ios::in);
datei2.open(dateiname, ios::in);
/*Die Schleife liest solange Zeilen in Datei1 ein und vergleicht sie mit jeder Zeile in Datei2 bis
keine Zeilen mehr vorhanden sind*/
do{
getline(datei1, zeile1);
datei2.seekg(0, ios::beg);
/*Die momentan geladene Zeile aus Datei1 wird solange mit Zeilen aus Datei2 verglichen bis sie
gefunden wurde, oder Datei2 in der letzten Zeile angekommen ist*/
do{
getline(datei2, zeile2);
if(zeile1.compare(zeile2) == 0)
{
gefunden = true;
break;
}
}while(zeile2.compare("ENDE") != 0);
/*Wurde keine entsprechende Zeile in Datei2 nicht gefunden wird Zeile1 ausgegeben*/
if(!gefunden)
cout<<zeile1<<endl<<"Zeile nicht vorhanden"<<endl<<endl;
gefunden = false;
}while(zeile1.compare("ENDE") != 0);
datei1.close();
datei2.close();
}