如何确定我已使用非编码文件到达 EOF?
How to determine I've reached EOF with a non coded file?
我在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(意味着没有更多的东西可以从文件缓冲区中读取,它不是显式地放在文件本身的东西。。你仍然应该用你的代码很好地到达那里
另一种方法是读取缓冲区,直到没有更多的字节可以读取
相关文章:
- 如何确定我已使用非编码文件到达 EOF?
- 如何在 EOF 之前从文件中读取并将其放入字符串中?
- 如何在从文件中读取整数时使用 file.eof()?
- 文件处理,eof() 定义
- 通过终端在文件中输入时检测EOF(文件结束)时出现问题
- 为什么 ifstream 的读数超出了 EOF?(即使没有打开文件)如何在EOF停止阅读
- 如何将EOF(文件结尾)放入代码::块中?
- .EOF 在读取文件时导致 Seg 错误:FIXXED
- 输入文件读取错误的值,eof 控制循环不会结束
- C OOP,读取文件的问题,EOF使用了两次,排行榜
- 文件设置正确,但eof()和peek()意外地从新流返回了错误的值
- C++和 eof 中的文件读取
- 文件I/O Infinite循环C EOF
- 在读取C 文件时跳过EOF
- 在C++中的文件中使用eof()
- 如何在 EOF (C++) 之前读取多个块中的文件
- 如何在使用ifstream读取txt文件时检查EOF
- 逐行计算文件:EOF 重复最后一个数字(不能使用中断)
- C++:FStream认为它已经达到了二进制文件的EOF
- C ++ .eof.未读取文件的最后一个值