Все проблемы с ++ - PullRequest
       45

Все проблемы с ++

3 голосов
/ 23 апреля 2011

Я использую Dev C ++ на 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;
}

этот код дает следующую ошибку

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 !

я не уверен, что здесь не так, я не могу скомпилировать код пожалуйста помогите

Ответы [ 3 ]

10 голосов
/ 23 апреля 2011

Если вы измените свой цикл на

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

, вы избежите возможности прочитать последнее значение дважды (см. в этом сообщении ).

10 голосов
/ 23 апреля 2011

std::ifstream::eof - это функция, которая возвращает bool. Таким образом, вы должны назвать это как

infile.eof()
8 голосов
/ 23 апреля 2011

Вы забыли () после eof.

...