我检查了 C++11 标准,发现以下事实:
std::getline(fin, str)
返回一个basic_ios
对象,其类有一个成员函数explicit operator bool() const;
该类
basic_ios
没有operator void*() const;
C++11 之前的成员函数。
所以,我认为if (getline(fin, str)) {}
不符合标准。它应该写成
if (bool(getline(fin, str)){}
. (但是,VC++ 2012 对这种用法给出了警告。即强制 void* 为 bool)
我对么?