我现在处于绑定状态,对此最令人沮丧的是我知道问题是什么,但我无法修复它:(...
我的目标是最终使用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!
答案 0 :(得分:3)
改为使用while (getline(std::cin, s_array)) { }
。
std::getline()
会返回istream&
,只要设置了错误标记,istream::operator void*()
就会将其评估为false
。
答案 1 :(得分:0)
你一定要阅读约瑟夫曼斯菲尔德的博客文章"Don't condition input on eof()",其中详细描述了这个陷阱,并提供了一个很有道理的指导方针。