3

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;
}

このコードは次のエラーを返します

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 !

ここで何が間違っているのかわかりません。コードをコンパイルできません。助けてください

4

3 に答える 3

10

ループをに変更した場合

  while(getline(infile,STRING))
  {
     cout<<STRING; 
  }

最後の値を2回読み取る可能性を回避します(このSOの投稿を参照)。

于 2011-04-23T14:07:30.533 に答える
10

std::ifstream::eofboolを返す関数です。したがって、次のように呼び出す必要があります

infile.eof()
于 2011-04-23T14:01:45.760 に答える
8

()の後のを忘れましたeof

于 2011-04-23T14:01:55.220 に答える