我已经在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并停止?
答案 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
。