gpt4 book ai didi

c++ - 为什么要先读取文件再检查?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:06 26 4
gpt4 key购买 nike

我只是在复习我的考试,无法理解我们讲师提供的以下内容:

打开fstreams时,检查是否打开

  • 然后在检查 input_file.fail() 之前阅读

  • 如果您在阅读之前进行检查,您可能会得到一个额外不需要的输入

我先阅读没有意义,你不应该先检查一下吗?

如果有人能解释一下,我将不胜感激:)

最佳答案

input_file.fail() 确定前面的操作是否失败,而不是即将进行的操作是否会失败。因此,如果你这样写:

if (!input_file.fail()) {
int value;
input_file >> value;

/* ... process value ... */
}

然后在读取value 之后,您根本不知道您是否真的读取了任何内容。您所知道的是,就在您进行读取之前,一切正常。您很可能无法读取整数,这可能是因为您到达了文件末尾,或者文件中的数据不是整数。

另一方面,如果你写

int value;
input_file >> value;

if (!input_file.fail()) {
/* ... process value ... */
}

然后您尝试进行读取。如果成功,则处理您读取的值。如果没有,您可以对上次操作失败的事实使用react。

(你可以比这更可爱:

int value;
if (input_file >> value) {
/* ... process value ... */
}

将读取和测试操作合二为一。在这里更清楚地表明您正在确认读取成功。)

如果你在循环中进行读取,一个非常简洁的方法是

for (int value; input_file >> value; ) {
/* ... process value ... */
}

这清楚地表明您可以继续从文件中读取值的同时进行循环。

希望这对您有所帮助!

关于c++ - 为什么要先读取文件再检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17202712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com