从文件读取时程序不会终止

时间:2014-10-22 18:57:01

标签: c++ file eof

在代码中看到大量文件操作时,我有点畏缩。但是好的旧freopen()在这个特定的代码段中让我失望了 -

int main()
{
    ifstream fin;
    int next=0;
    fin.open("In.txt");
    if(fin.is_open())
    {
        while(!fin.eof())
        {
            cout<<next;
            next++;
        }
    }
    else cout<<"Unable to open file"<<endl;
    return 0;
}

我包含的标题是iostream,fstream和cstdio。这进入了一个无限循环。

我的问题是,我提供的文件作为输入肯定有一个结束。但为什么程序不会终止?提前谢谢。

2 个答案:

答案 0 :(得分:2)

您几乎不应该使用eof()作为文件读取循环的退出条件。尝试

std::string line;
if(fin.is_open())
{
    while(getline(fin, line))
    {
        cout<<line;
    }
}

如果您解释next实际上应该做什么,我可以尝试告诉您如何操作,但我个人通常会阅读getlineoperator>>的文件需要任何控制整数。

答案 1 :(得分:0)

您正在打开一个文件而实际上并没有从中读取文件。每次检查是否到达文件末尾时,流都在同一位置。

所以把它改成这样的东西:

string word;
while(!file.eof()) {
  file >> word;
  cout << next;
  next++;
}