c – 为什么先读取文件然后检查?
发布时间:2020-12-16 03:40:41 所属栏目:百科 来源:网络整理
导读:我正在修改我的考试,不能理解我们的讲师提供的以下内容: 打开fstream时,检查是否已打开 然后在检查input_file.fail()之前读取 如果你在阅读之前检查,你可能会得到一个 额外不需要的输入 我首先阅读没有意义,你不应该先检查一下吗? 如果有人能够解释,我将非
我正在修改我的考试,不能理解我们的讲师提供的以下内容:
打开fstream时,检查是否已打开 >然后在检查input_file.fail()之前读取 我首先阅读没有意义,你不应该先检查一下吗? 如果有人能够解释,我将非常感激:) 解决方法
input_file.fail()确定是否有任何先前的操作失败,而不是即将进行的操作是否会失败.因此,如果你这样写:
if (!input_file.fail()) { int value; input_file >> value; /* ... process value ... */ } 然后在读取值之后,你根本不知道你是否真正读过任何东西.你所知道的就是在你阅读之前,一切都正常.您很可能无法读取整数,因为您遇到了文件的末尾,或者文件中的数据不是整数. 另一方面,如果你写 int value; input_file >> value; if (!input_file.fail()) { /* ... process value ... */ } 然后你试图做一个阅读.如果成功,则处理您已阅读的值.如果没有,您可以对最后一次操作失败的事实作出反应. (你甚至可以比这更可爱: int value; if (input_file >> value) { /* ... process value ... */ } 它将读取和测试操作合二为一.你在确认读取成功的时候要清楚得多.) 如果您正在循环中读取,那么执行此操作的方法非常简洁 for (int value; input_file >> value; ) { /* ... process value ... */ } 这清楚地表明,在您能够继续从文件中读取值时循环. 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |