std :: getline()如何与bool等同?

时间:2016-10-28 06:01:39

标签: c++ stl operator-keyword getline conversion-operator

我是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()

1 个答案:

答案 0 :(得分:3)

  

std :: ifstream是否实现了运算符bool()?

It does:

  

检查流是否没有错误。 &LT; ...&GT;如果流没有错误并且已准备就绪,则返回true   I / O操作。具体来说,返回!fail()

     

该运算符可以使用流和函数   将对流的引用作为循环条件返回,从而产生   惯用的C ++输入循环,例如while(stream >> value) {...}或   while(getline(stream, string)){...}