while循环结构与getline函数结合,一直持续到EOF

时间:2015-01-29 07:08:54

标签: c++

我现在处于绑定状态,对此最令人沮丧的是我知道问题是什么,但我无法修复它:(...

我的目标是最终使用getline从重定向输入(从文本文件)中读取字符串行,并继续运行直到达到EOF。

示例文本文件(内容):

Hello World!

再见。

我的源代码(仅包含不起作用的部分):

while (!(getline(std::cin, s_array)).eof()){ // it won't read second line
//do some awesome stuff to the first line read!
}

据我所知,getline会读取换行符中的所有内容并停止播放,因此我们如何让它继续阅读,因为它总是停在Hello World!

2 个答案:

答案 0 :(得分:3)

改为使用while (getline(std::cin, s_array)) { }

std::getline()会返回istream&,只要设置了错误标记,istream::operator void*()就会将其评估为false

答案 1 :(得分:0)

你一定要阅读约瑟夫曼斯菲尔德的博客文章"Don't condition input on eof()",其中详细描述了这个陷阱,并提供了一个很有道理的指导方针。