文件读取不正确

File not reading in correctly

本文关键字:不正确 读取 文件      更新时间:2023-10-16

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

下面我有一个while循环的main代码。我放置循环只是为了看看它在调试时会如何运行,它运行一个无限循环,因为它总是在"中读取,并且永远不会到达文件末尾。我已经把文件放在工作目录和其他文件夹中,只是为了确定,但它总是这样做,即使文件中充满了字符串和整数。我在这里做错了什么吗?

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

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

官方表示,您可以在尝试打开后测试readFile.fail()

我发现检查readFile.good()也很好——事实上,您可以将其用作循环条件。

我更喜欢代码中"好"的积极信息,而不是潜在的令人沮丧的"失败"。

当你阅读数据时,你还应该按照WhozCraig在评论中建议的那样测试你的流。您不能认为操作成功。如果它失败的原因不是EOF,你需要知道。

由于这些原因,不要使用readFile.eof()作为循环条件。