0

所以我们通常会做类似的事情

std::ifstream file("file");
std::string line;
bool ret = getline(file,line);

并且“ret”布尔值告诉我们是否找到了该行。

但是我如何事先确定下一次调用“getline()”是否肯定会返回 false?换句话说,我如何检查我是否已经到达 EOF,而不必调用“getline()”来确认它?

我想这样做的原因是我有这样的情况:

while(getline(file,line))
{
  //code
  //i want to do some "final" thing right here in this loop, for the last line.
}
4

2 回答 2

1

你可以使用std::istream::peek

读取并返回下一个字符而不提取它,即将它作为要从流中提取的下一个字符。

EOF如果到达终点,将返回。

于 2013-02-23T08:44:14.313 回答
1

getline 实际上返回对 ostream 的引用,只有在达到 eof 或流变坏时才会强制转换为 false,这是无法预测的。因此,这取决于您的情况以及是否要同时处理 eof 和坏流。

于 2013-02-23T08:46:36.583 回答