如何确定我已使用非编码文件到达 EOF?

How to determine I've reached EOF with a non coded file?

本文关键字:文件 EOF 编码 何确定      更新时间:2023-10-16

我在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

这一切都很好,但他们忘记在最后添加一个退出命令,所以代码不会停止。那么,在这种情况下,我如何获得检测EOF并停止的代码呢?

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

例如,对于getline,您可以使用

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

或使用>>:

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

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

文件结束(EOF(意味着没有更多的东西可以从文件缓冲区中读取,它不是显式地放在文件本身的东西。。你仍然应该用你的代码很好地到达那里

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