我是std::getline(...)
处女并在cppreference.com咨询了文档和示例,我对此示例代码感到困惑:
#include <sstream>
#include <string>
int main(int argc, char* argv[])
{
std::string line;
std::ifstream infile("sample.txt");
while (std::getline(infile, line))
{
// Do stuff
}
return 0;
}
...特别是while语句:while (std::getline(infile, line))
。
注意到的文档说std::getline(std::basic_istream<CharT,Traits>& input, ...)
的返回值是input
,即对第一个参数的引用。
然后,如何将getline
的返回值用作while循环的条件,该条件需要为bool
类型?
std::ifstream
是否实施operator bool()
?
答案 0 :(得分:3)
std :: ifstream是否实现了运算符bool()?
检查流是否没有错误。 &LT; ...&GT;如果流没有错误并且已准备就绪,则返回true I / O操作。具体来说,返回
!fail()
。该运算符可以使用流和函数 将对流的引用作为循环条件返回,从而产生 惯用的C ++输入循环,例如
while(stream >> value) {...}
或while(getline(stream, string)){...}