文件未正确读取

时间:2013-02-06 22:09:44

标签: c++ fstream

我有一个读入文件的程序。我的所有类都编译得很好,但是当我在文件中读取时似乎出现了错误。 Eclipse显示正在读入一个空字符串(“”),这不是我想要的。

我在下面有一个while循环的代码。我放置循环只是为了看它在调试时是如何运行的,并且它运行一个无限循环,因为它总是在“”中读取,并且永远不会到达文件末尾。我已将文件放在工作目录和其他所有文件夹中以确保,但即使文件中包含字符串和整数,它也始终执行此操作。我在这里做错了吗?

#include "Translator.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>

using namespace std;

int main(int argc, char* argv[])
{
    ifstream readFile;
    readFile.open("sample.html");

    while (!readFile.eof()) // for debugging purposes only
    {
    string x;

    readFile >> x; // x is "" everytime through the loop
    readFile >> x; // x is also ""
    }
    Translator t(readFile);

    readFile.close();
    return 0;
}

1 个答案:

答案 0 :(得分:0)

我的猜测是你的文件实际上没有打开,因此没有设置eof位。您永远不会测试文件是否已成功打开。可能是您的工作目录不是您想象的那样,或者文件被另一个进程锁定(可能在文本编辑器中打开)。

正式地,您可以在尝试打开后测试readFile.fail()

我发现检查readFile.good()也很好 - 事实上你可以将它作为你的循环条件。

我更喜欢我的代码中的“好”的积极信息,而不是可能令人沮丧的“失败”。

在阅读数据时,您还应该按照WhozCraig在评论中建议的方式测试您的信息流。您不能假设操作成功。如果由于EOF以外的原因而失败,你需要知道。

出于这些原因,请勿使用readFile.eof()作为循环条件。

相关问题