如何确定我已通过非编码文件到达EOF?

时间:2018-11-06 05:40:34

标签: c++

我已经在EOF中查找了多个实例,但是在所有实例中,EOF都在程序的一部分文件上使用,例如:

std::fstream myFile("file.txt", std::ios::in);
while(!myFile.eof()) {
    /*program*/
}

但是,在这种情况下,我没有将文件用作代码的一部分。我只是使用基本的cin命令。有一个要退出的命令,但假设用户运行的程序是这样的:

./program <myFile.txt> myOutput

让我们说myFile在其中具有以下命令:

add 1
add 2
delete 1
print

很好,但是他们忘了在最后添加一个quit命令,因此代码不会停止。那么如何获取代码以在这种情况下检测EOF并停止?

2 个答案:

答案 0 :(得分:0)

文件尾(EOF)意味着不再需要从文件缓冲区中读取内容,这不是一个明确地放在文件本身上的东西。您仍然应该在代码中找到正确的地方

另一种方法是读取缓冲区,直到没有更多字节可以读取为止

答案 1 :(得分:0)

检测文件结尾的正确方法是检查每个输入操作是否成功。

例如,您将使用getline

std::string line;
while (std::getline(std::cin, line)) {
    // do stuff with line
}

或使用>>

while (std::cin >> x) {
    // do stuff with x
}

这适用于所有输入流,无论它们来自文件(fstream)还是例如cin