C ++ 11標準を確認したところ、次の事実が見つかりました。
std::getline(fin, str)
basic_ios
クラスにメンバー関数があるオブジェクトを返しますexplicit operator bool() const;
このクラスには、 C++11より前
basic_ios
のメンバー関数はありません。operator void*() const;
if (getline(fin, str)) {}
ですから、標準適合ではないと思います。それは次のように書く必要があります
if (bool(getline(fin, str)){}
。(ただし、VC ++ 2012は、この使用法について警告を出します。つまり、void *を強制的にブール値にします)
私は正しいですか?