gpt4 book ai didi

c++ - 在 ifstream 上调用 clear() 有问题吗?

转载 作者:行者123 更新时间:2023-11-30 03:18:38 41 4
gpt4 key购买 nike

我有一个函数可以像这样循环读取具有固定格式的文件:

istream.seekg(0, std::ios::begin);
while (istream >> x >> y) {
// do something
}

正如我发现的那样,在循环退出后,eofbitfailbit 都被设置了,这里也有详细的记录。我希望能够在下次调用该函数时再次重新读取该文件,而无需关闭并重新打开 ifstream 因此要使其正常工作,我必须添加一个 istream。 clear() 首先。对我来说似乎很奇怪,因为 c++11 记录的 seekg() 行为说它将清除 eofbit 但它对 failbit< 没有任何作用 这使得 seekg() 的这方面对我来说似乎毫无用处。无论如何,以任何方式调用 clear() 是否有问题,例如隐藏任何潜在的错误条件等?

最佳答案

首先让我在这里非常准确地使用术语。当 bad bit 或 fail bit 被设置时,循环结束,但碰巧当 eof 位被设置时 fail 位也被设置。

bad 位表示更严重(不可恢复)的错误,因此如果您检查 istream.bad() 是否为 false,调用 clear 以重用流应该没问题。

关于c++ - 在 ifstream 上调用 clear() 有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54537272/

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