gpt4 book ai didi

c++ - ifstream.peek() 到达文件末尾时的返回值

转载 作者:太空狗 更新时间:2023-10-29 20:31:40 30 4
gpt4 key购买 nike

我在 Cplusplus.com 上看这篇文章,http://www.cplusplus.com/reference/iostream/istream/peek/

我仍然不确定如果 peek() 到达文件末尾会返回什么。

在我的代码中,只要这条语句为真,程序的一部分就应该运行

(sourcefile.peek() != EOF)

其中 sourcefile 是我的 ifstream。

但是,它永远不会停止循环,即使它已经到达文件末尾。

EOF 不是“文件结束”的意思吗?还是我用错了?

最佳答案

咨询标准,

Returns:traits::eof() ifgood()isfalse. Otherwise,returnsrdbuf()->sgetc().

至于sgetc()

Returns: If the input sequence read position is not available, returns underflow().

下溢,

If the pending sequence is null then the function returns traits::eof() to indicate failure.

是的,在文件末尾返回 EOF

更简单的判断方法是它返回 int_type。由于 int_type 的值只是 char_type 加上 EOF 的值,如果 EOF 不可能,它可能会返回 char_type

正如其他人提到的,peek 不会提升文件位置。通常最简单也是最好的方法是循环 while ( input_stream ) 并让未能获得额外输入的情况终止解析过程。

关于c++ - ifstream.peek() 到达文件末尾时的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3712379/

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