eof() 在文件输入中的使用:一种有争议的实践
问题:
尽管如此eof() 函数在文件输入程序中的常见使用引起了争议。虽然一些程序员认为它可以接受,但其他程序员强烈建议不要使用它。这个问题探讨了这种划分背后的原因。
答案:
eof() 函数有一个特定的目的:识别超出文件末尾的读取尝试。然而,对于测试是否还有其他输入或读取操作是否成功这两种更常见的情况来说,这是一个糟糕的选择。
为什么它被认为是不好的做法:
The eof() 不被鼓励的主要原因是它的歧义。它仅指示是否尝试读取超出文件末尾的内容。它不提供有关是否实际读取了有效数据或是否有更多数据需要处理的信息。
不当使用示例:
考虑以下错误用法:
while (!cin.eof()) { cin >> foo; }
此循环假设 eof() 可以确定是否还有输入需要读取。但是,如果读取操作由于到达文件末尾之外的任何原因(例如无效格式)而失败,则循环将无限期地继续。
正确用法:
要正确测试 eof() 代表的特定条件,请采用以下方法:
if (!(cin >> foo)) { if (cin.eof()) { cout << "Read failed due to EOF\n"; } else { cout << "Read failed due to something other than EOF\n"; } }
以上是文件输入中的'eof()”是一个好的实践吗?为什么它有争议?的详细内容。更多信息请关注PHP中文网其他相关文章!