Hier ist der Code. Es gibt den GENAUEN Ausgang wie unten gezeigt bedeutet, dass er die Datei liest. Aber es zeigt auch fails
, wie Sie sehen können, bedeutet fin.fails()
ist true
. Ich möchte wissen, warum dies wahr ist, obwohl ich die Datei erfolgreich lesen kann.Warum Input-Stream-Objekt fehlschlägt nach dem Lesen der Datei bis zum Ende?
#include<fstream>
#include<iostream>
using namespace std;
int main()
{ ifstream fin;
fin.open("pro.txt");
char ch;
int data;
while(!fin.eof())//!(fin >> ch).eof()
{
fin.get(ch);
cout<<ch;
if(fin.fail()) {
cout<<"fails";
break;
}
}
fin.clear();
fin.seekg(0);
int pos=(int)fin.tellg();
cout<<"\n this is :"<<pos;
fin.close();
return 0;
}
Output is :
this is my name
fails
this is 0
Contents of pro.txt:
this is my name
Ich weiß nicht, warum das passiert!
[OT] Verwenden Sie 'eof' nicht für eine Schleifenbedingung: http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-conspired-wrong – NathanOliver
dann was zu benutzen ? und auch warum die fin.fails wahr ist – akitsme
Der richtige Weg ist die Leseoperation zu verwenden. – NathanOliver