Вот код. Он дает EXACT-выход, как показано ниже, означает, что он читает файл. Но он также показывает fails
, как вы можете видеть, это означает, что fin.fails()
is true
. Я хочу знать, почему это правда, хотя я успешно читаю файл.Почему входной объект потока не удается после чтения файла до конца?
#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
Не знаю, почему это происходит!
[OT] Не используйте 'eof' для условия цикла: http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong – NathanOliver
то что использовать? а также почему fin.fails истинно – akitsme
Правильный способ - использовать операцию чтения. – NathanOliver