use*_*776 3 c++ fstream dev-c++ eof
我在Windows XP上使用Dev C++
#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;
}
Run Code Online (Sandbox Code Playgroud)
此代码给出以下错误
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 !
Run Code Online (Sandbox Code Playgroud)
我不知道这里有什么问题我无法编译代码请帮忙
Osw*_*ald 10
std::ifstream::eof是一个返回bool的函数.你必须这样称呼它
infile.eof()
Run Code Online (Sandbox Code Playgroud)
jon*_*sca 10
如果您将循环更改为
while(getline(infile,STRING))
{
cout<<STRING;
}
Run Code Online (Sandbox Code Playgroud)
你避免了两次读取最后一个值的可能性(参见这篇SO帖子).