c++ - eof问题c++

标签 c++ fstream eof dev-c++

我在 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 !

我不确定这里有什么问题我无法编译代码 请帮忙

最佳答案

如果您将循环更改为

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

您避免了两次读取最后一个值的可能性(参见 this SO post)。

关于c++ - eof问题c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5764579/

相关文章:

C++在读取文件时在字符串开头添加回车符

c# - 将文本文件添加到我的代码的开头会导致解析错误

c - 从C文件中读取字符串的问题

c++ - 如何自动测试二进制兼容性?

c++ - 使用复制构造函数创建的对象的生命周期

c++ - 对 fstream 输出操作执行 'catch all' 错误检查的正确方法是什么?

c++ - 有什么方法可以从文件 C++ 中自动读取一行

c++ - Ifstream - 重置 EOF 位

c++17 如何编写 is_pointer_pointer 泛型 lambda?

c++ - vector<int> 中的 std::sort 返回 0 而不是值