问题
i am using Dev C++ on windows xp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main ()
{
string STRING;
ifstream infile;
infile.open ("sample.txt");
while(!infile.eof)
{
getline(infile,STRING);
cout<<STRING;
}
infile.close();
return 0;
}
this codes gives the following error
C:\C++\read.cpp: In function `int main()':
C:\C++\read.cpp:11: error: could not convert `infile.std::basic_ios<_CharT, _Traits>::eof [with _CharT = char, _Traits = std::char_traits<char>]' to `bool'
C:\C++\read.cpp:11: error: in argument to unary !
i am not sure what is wrong here i cant compile the code please help
回答1:
If you change your loop to
while(getline(infile,STRING))
{
cout<<STRING;
}
you avoid the possibility of reading the last value twice (see this SO post).
回答2:
std::ifstream::eof
is a function that returns a bool. Thsu you have to call it like
infile.eof()
回答3:
You forgot the ()
after the eof
.
来源:https://stackoverflow.com/questions/5764579/eof-problem-c