【发布时间】:2011-06-08 18:43:51
【问题描述】:
我需要知道ifstream 中的下一个字符是否是文件的结尾。我正在尝试使用.peek():
if (file.peek() == -1)
和
if (file.peek() == file.eof())
但两者都不起作用。有办法做到这一点吗?
编辑: 我要做的是在文件中每个单词的末尾添加一个字母。为了做到这一点,我询问下一个字符是否是标点符号,但是这样最后一个单词就没有多余的字母了。我只使用char,而不是string。
【问题讨论】:
-
你不应该这样做。它不会告诉您下一次读取是否会失败。你想完成什么?
-
你想要达到的目标是什么,这让你需要知道。也许如果您描述更大的问题,我们可以建议如何解决问题。
-
如果您真的想针对 EOF 进行测试,请尝试
if (file.peek() == ifstream::traits_type::eof())。但正如 littleadv 指出的那样,peek()实际上会在流本身上设置 EOF 位。所以正如 rubenvb 指出的那样,你想做什么?